2013-02-08 2 views
11

Я играю с несколькими раскадными базами и базовой локализацией на xCode 4.6. На самом деле яБаза интернационализации и многократная раскадровка не работают правильно

я сделал:

1) редактировать мой проект INFOS локализаций: галочка «Использовать базовый Интернационализация» и добавил Языки: английский, китайский

2) создать новый раскадровки под названием «anotherstoryboard.storyboard "

3) локализовать мою новую раскадровку (File Inspector/Localize - Localize) с использованием интернационализации базы данных.

4) в моем приложении делегата, я загружаю динамически мою локализованную раскадровку, как это:

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

случая 1: => работает

Для моей новой раскадровки (шаг 3) я выбираю Локализация китайский - Interface Builder Cocoa Touch Раскадровка

enter image description here

Он работает, но н ow Мне нужно поддерживать локализованный раскадровки, редактируя их с помощью IB. Я не хочу такого поведения, я просто хочу использовать базовую интернационализацию и локализовать файлы .strings.

случай 2: => врезается

Для моей новой раскадровки (шаг 3) Я выбираю Localization китайский - Localizable Струны

enter image description here

АРР, аварии говорят, что не может найти мой раскадровка

'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)' 

Что я делаю неправильно? Почему iOS не находит правильную раскадровку в случае 2?

+0

Непонятно, что вы делаете в двух случаях. Повторите попытку. – Mundi

+0

Хорошо, я немного разъяснил объяснение и добавил скриншоты из File Inspector, соответствующие моей новой раскадровке (выбранной в Навигаторе проектов). –

+0

Пожалуйста, посмотрите эту тему: http://stackoverflow.com/questions/16928670/ios-storyboard-localizable-strings-do-not-work-on-uilabel-subclasses –

ответ

2

Я пробовал точно так же, как вы, и я могу сказать, что эта ошибка произойдет, как вы показали.

Решение заключается в удалении и добавлении файла раскадровки из фаз сборки целей. Поэтому нажмите на цель, как показано на картинке. Build Phases of a target

Затем удалите файл раскадровки из фаз сборки и добавьте его снова.

Это сработало для меня!

+0

Это не работает для меня :-(Кроме того, я заметил одно: когда я просматриваю пакет приложений, в папке base.lproj MainStoryboard скомпилирован (MainStoryboard.storyboardc), но не новый (anotherstoryboard.storyboard) –

3

Вы получаете эту ошибку, потому что для iOS 6 (требуется для интернационализации базы данных) файл раскадровки компилируется в файл storyboardc. Также он копирует файлы, принадлежащие ему, к цели. Таким образом, на устройстве iOS 6 нет файла .storyboard.

Чтобы скомпилировать файл раскадровки, вам необходимо убедиться, что он находится в фазе создания ресурсов копирования Bundle. Затем компилятор раскадровки (см. Правила сборки) запускается и должен скомпилировать его. Если нет, то это ошибка, и вы должны сообщить об этом.

+0

Раскадровка находится в фазе сборки, о которой вы упомянули. Я попробую на форуме разработчиков Apple, чтобы узнать, есть ли у них больше информации об этом. –

13

Я только что столкнулся с тем же вопросом (снова) после начала локализации новой раскадровки в Xcode 4.6.2. Я проверил, что все было правильно настроено, как предложено здесь и в другом месте, и это действительно так.

Для меня проблема была решена путем закрытия проекта в Xcode и ручной очистки каталога Xcode «Производные данные» (см. Настройки Xcode) из Finder. Затем я снова открыл проект, сделал чистую сборку, и воля, раскадровка была составлена ​​правильно и работала, как ожидалось.

+1

Плюс один для простого перезапуска xcode ... Спасибо. –

+0

просто работал как champ .. Спасибо Кристофер .. – RockandRoll

+0

omg, трюк «Derived Data» только что работал в XCode 6.3.2 –

0

В настройках локализации раскадровки попробуйте удалить флажок рядом с опцией «База». Он не поддерживается в iOS6

1

Нажмите на проект внутри Project Navigator, выберите ваш проект и выберите Info наверху. Затем вы должны снять отметку Use Base Internationalization и нажать «Удалить».

enter image description here

0

Я исправил проблему путем перетаскивания моей раскадровки в видоискатель, а затем удалите один в боковой панели Xcode, а затем заново добавить один я первоначально потащил к поиску обратно в боковой панель Xcode. THEN удаление старого RED файла раскадровки в «ресурсы пакета копирования» и добавление нового вручную путем его перетаскивания.

0

Поскольку это было предупреждение, а не ошибка, я не думал, что это будет проблема сначала , но в конечном итоге это был мой единственный груз. В правой боковой панели, самой левой опции (значок, который похож на документ), я увидел раздел Локализация с двумя флажками: Base и English. База была проверена и английский не установлен.

enter image description here

Вместо этого, я проверил на английском, а затем изменил раскрывающемся меню Interface Builder. Затем я снял флажок с базы. не

enter image description here

Когда я снова проверил сборки правило, Main.storyboard уже не красный. И когда я снова попытался запустить приложение в симуляторе 5.1, все получилось просто отлично. Примечание. Просто проверить английский язык/Интерфейс Builder достаточно, чтобы приложение запускалось в iOS 5.1, но тогда вы столкнетесь с проблемой, когда обновления для Раскадровки не будут отображаться. Вам нужно снять отметку с базы, чтобы английский был единственной версией раскадровки; таким образом, обновления будут всегда отражаться сразу же после повторного запуска.

1

Я столкнулся с той же проблемой и потратил 2 дня, чтобы решить эту проблему.

Конечно, я попробовал все, что выше, как: очистки проекта, переустановку содержимое и настройки в IOS Simulator, удалить все файлы в/Users/имя_пользователя/Library/Application Support/iPhone Simulator, удалить все файлы/Users/имя_пользователя/Library/Developer/Xcode/DerivedData, удаление приложения в IOS устройства

и ничего помогает мне решить мою проблему - раскадровки локализации с использованием базы Интернационализация + Storyboard.strings не компилирует локализованную раскадровки.

И причина в том, что ранее проект был нацелен на iOS 5.1, но теперь для iOS 6.1. После изменения цели развертывания проекта я забыл изменить настройки компиляции в раскадровке.

Что мне помогает - просто измените «Создает», по крайней мере, «iOS6.1 и более поздние версии»в файле инспекторе раскадровки.

enter image description here

0

Base Интернационализация поддерживается только на IOS 6.

я столкнулся с той же проблемой, как вы, но еще хуже, потому что я Жду» т тест на прошивке 5. Я только знал об этом после того, зная, что многие из моих пользователей испытали аварию.

Итак, берегитесь.

Есть детали на моих blog об этом. Как вы уже знаете, xib все еще работает. Поэтому конвертируйте все строки в xib (совсем не сложно).

+0

У меня есть приложение для календаря, которое поддерживает 5 языков, iOS 8 и далее, хорошо ли иметь интернационализацию базы? – Sandy

+0

@Sandy Да. Не понимаю, почему нет, так как вы поддерживаете iOS 8 и далее. – samwize

Смежные вопросы