L'internationalisation de Base et le storyboard multiple ne fonctionne pas correctement

je joue avec plusieurs storyboards et la localisation de base sur Xcode 4.6. En fait, 151930920"

j'ai fait:

1) Modifier mon infos projet localisations: coché "utiliser L'internationalisation de Base" et ajouté les langues: Anglais, Chinois

2) Créer un nouveau storyboard appelé" anotherstoryboard.storyboard "

3) localisez mon nouveau storyboard (File Inspector / Localize - Localize) en utilisant la Base internationalisation.

4) dans mon app delegate, je charge dynamiquement mon storyboard localisé, comme ceci:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"anotherstoryboard" bundle:nil];

cas 1: = >

pour mon nouveau storyboard (étape 3) je choisis la localisation chinois-Interface Builder Cocoa Touch Storyboard

enter image description here

ça marche mais maintenant je dois maintenir le storyboard localisé, éditant avec de l'IB. Je ne veux pas d'un tel comportement, je veux juste utiliser l'internationalisation de base et la localisation .les chaînes de fichiers.

cas 2: => plante

pour mon nouveau storyboard (étape 3) je choisis la localisation Chinois-chaînes localisables

enter image description here

L'application se bloque en disant qu'il ne trouve pas mon storyboard

'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'anotherstoryboard' in bundle NSBundle </Users/me/Library/Application Support/iPhone Simulator/6.1/Applications/8E036C84-6058-4420-94B4-1726E1F686AD/HelloWorld.app> (loaded)'

Ce que je fais mal ? Pourquoi iOS ne trouve-t-il pas le bon scénario dans le scénario 2 ?

12
demandé sur thomas.g 2013-02-08 17:20:37

10 réponses

je venais de tomber sur le même problème (à nouveau) après avoir commencé à localiser un nouveau storyboard dans Xcode 4.6.2. J'ai vérifié que tout était bien organisé comme suggéré ici et ailleurs, et en effet il l'était.

pour moi, le problème a été résolu en fermant le projet dans Xcode et en effaçant manuellement le répertoire "Derived Data" de Xcode (voir préférences Xcode) du Finder. Puis j'ai rouvert le projet, une construction propre, et voilá, le storyboard ai compilé correctement et a fonctionné comme prévu.

14
répondu Christopher Lenz 2016-03-04 07:21:58

vous obtenez cette erreur parce que pour iOS 6 (qui est requis pour L'internationalisation de Base) le fichier storyboardc est compilé dans un fichier storyboardc. Il copie également les fichiers de chaînes qui lui appartiennent à la cible. Ainsi sur un appareil iOS 6 il n'y a pas .storyboard de fichier.

pour obtenir un fichier storyboard compilé, vous devez vous assurer que c'est dans la phase de compilation des ressources de paquet de copie. Puis le compilateur storyboard (voir règles de compilation) s'active et devrait le compiler. Si ce n', alors c'est un bug et vous devriez le signaler.

3
répondu Cocoanetics 2013-02-18 07:56:18

j'ai essayé exactement la même chose que vous et je peux dire que cette erreur se produira comme vous l'avez montré.

la solution est de supprimer et d'ajouter votre fichier storyboard de vos phases de construction de cibles. Par conséquent, cliquez sur votre cible comme indiqué dans l'image Build Phases of a target

puis supprimer le fichier storyboard des phases de construction et l'ajouter à nouveau.

ça a marché pour moi!

2
répondu who9vy 2013-09-12 09:31:52

cliquez sur le projet à l'intérieur du Project Navigator , sélectionnez votre projet et sélectionnez Info en haut. Ensuite, vous devez désélectionner Use Base Internationalization et cliquez sur "Supprimer".

enter image description here

1
répondu Alex Cio 2014-01-13 18:01:45

j'ai corrigé le problème en glissant mon story board dans finder, puis en supprimant celui du panneau latéral de Xcode, puis en rajoutant celui que j'avais initialement glissé dans finder dans le panneau latéral de Xcode. Puis suppression de l'ancien fichier RED storyboard dans "copier les ressources package" et ajout du nouveau manuellement en le faisant glisser dans.

1
répondu Albert Renshaw 2014-02-03 06:09:47

j'ai fait face au même problème et j'ai passé 2 jours à le résoudre.

bien sûr que j'ai essayé toutes les choses au-dessus, comme: projet de nettoyage, mettre à zéro le Contenu et les Paramètres dans le Simulateur iOS, suppression de tous les fichiers dans /Utilisateurs/Nomutilisateur/Bibliothèque/Application Support/Simulateur d'iPhone, suppression de tous les fichiers dans /Utilisateurs/Nomutilisateur/Bibliothèque/Développeur/Xcode/DerivedData, suppression de L'application dans le dispositif iOS

et rien ne m'aide à résoudre mon problème-localisation Storyboard utilisation de base Internationalization + Storyboard.strings ne compile pas les Storyboards localisés.

et la raison en était que le projet était auparavant ciblé pour iOS 5.1 mais maintenant pour iOS 6.1. Après avoir changé la cible de déploiement du projet, j'ai oublié de changer les paramètres de compilation dans storyboard.

Ce qui m'aide, il suffit de changer ", s'appuie pour" au moins "iOS6.1 et, plus Tard," dans l'Inspecteur de Fichiers de votre storyboard.

enter image description here

1
répondu Firuz Narzikulov 2014-04-14 05:17:24

dans les paramètres de localisation du storyboard, essayez de supprimer le contrôle à côté de l'option "Base". Il n'est pas pris en charge sous iOS6

0
répondu Rizon 2013-11-20 17:12:06

Puisque c'était un avertissement et non une erreur, je ne pense pas que ce serait un problème au début, mais finalement c'était ma seule charge. Dans la barre latérale droite, option la plus à gauche (l'icône qui ressemble à un document), j'ai vu une section de localisation avec deux cases à cocher, Base et anglais. La Base a été vérifiée et l'anglais NON vérifiée.

enter image description here

à la place, j'ai vérifié l'anglais, puis changé le dropdown en Interface Builder. Puis j'ai décoché Base.

enter image description here

quand j'ai vérifié la règle de construction, Main.storyboard n'était plus rouge. Et quand j'ai essayé de relancer l'application dans le simulateur 5.1, ça s'est très bien passé. Note: il suffit de vérifier l'anglais/Interface Builder pour que l'application tourne dans iOS 5.1, mais vous rencontrerez alors un problème où les mises à jour du Storyboard ne seront pas reflétées. Vous devez décocher la Base pour que l'anglais soit la seule version du storyboard il y en a; de cette façon, les mises à jour seront toujours reflétées dès que vous relancerez.

0
répondu Rugmangathan 2014-03-31 05:51:48

de la Base de l'Internationalisation est uniquement pris en charge sur les iOS 6 .

j'ai rencontré le même problème que vous, mais pire, parce que je n'ai pas testé sur iOS 5. Je savais seulement à ce sujet après avoir connu beaucoup de mes utilisateurs ont connu des accidents.

Donc, prenez garde.

Il ya des détails sur mon blog à ce sujet. Comme vous le savez, xib fonctionne toujours. Par conséquent, convertir toutes les chaînes de caractères en xib (n'est pas dur à tous).

0
répondu samwize 2014-04-23 07:58:39

résolu

j'ai le problème avec certaines traductions en arabe. J'ai essayé tous les moyens possibles mentionnés dans le post mais aucun n'a fonctionné pour moi.

finalement j'ai trouvé que mon Xcode ne rapporte pas d'erreur dans le fichier string pour mon story board! J'ai corrigé le problème dans le fichier string et mon application fonctionne comme prévu !

(indice: Vous pouvez aussi vérifier les erreurs de la console)

0
répondu Nahid Ali 2018-07-03 11:03:52