Мне интересно, как обновить viewControllers с файлами nib и UITableview как subview, пока я меняю язык на странице настроек моего приложения, а не на языке устройства. Я мог подумать об использовании NSNotificationCenter для этого сценария, но в то же время мне также нужно подумать об обновлении ярлыка ячейки таблицы. Я не могу или не хочу перезагружать таблицу, потому что я делаю много вещей в методе cellForRowAtIndexPath, потому что в таблице много данных. Также проблема связана с использованием метода делегата. Может ли кто-нибудь предложить/помочь мне, как устранить эту проблему, не перегружая табличное представление.обновить все UIViewController после изменения языка внутри приложения
ответ
Для пользовательской локализации это сделать (Этот ответ специфичен на этот вопрос не является альтернативой локализации)
сделать макрос в файле определяет. если у вас его уже нет, то
Добавить новый файл-> name it Defines.h -> удалить его .m-> удалить все вещи внутри своего .h-> импортировать его в .pch.
Теперь определить макрос в нем LOCALISEDSTRING(m) [[[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Language" ofType:@"plist"]] objectAtIndex:globalIntIndex]objectForKey:m]
вы «globalIntIndex» также объявлен в defines.h установить его с соответствующим indexvalue для каждого языка.
Теперь добавьте файл plist и назовите его «Язык» добавьте в него свои языки как элемент массива, а внутри каждого языка добавьте KEY со строковым значением в качестве словаря. Ключ будет одинаковым для каждого языка
Plist будет выглядеть выше изображение поместить весь текст английского в пункте 0 и русском текст в пункте 1.
теперь вы можете использовать его как NSLog(@"%@",LOCALISEDSTRING(@"KEY"));
если globalIntIndex = 0, тогда он будет печатать строку на английском языке, иначе она будет печатать строку на русском языке.
Спасибо за предложение, его работа. Теперь мое сомнение похоже: предположим, что есть три ViewControllers с именем A, B, C. В C ViewController есть возможность изменить язык, и после его изменения все элементы пользовательского интерфейса, такие как label, textField, button, текст ячейки таблицы, должны быть изменены во всех трех ViewController. Если я реализую по вашей идее, это не обновление , – Amit89
Вам необходимо установить отображаемый текст, появится метод. – amar
Это проблема, потому что у меня много данных в представлении таблицы, поэтому, если я перезагрузите табличное представление для обновления производительности таблицы, проблема будет вставлена на передний план. Также можно обновить .. – Amit89
Я думаю, что в вашем приложении может быть Localizable.strings
файл.
Подробнее об этом учебнике: Localization Tutorial for iOS.
Кроме того, здесь есть два демо:
Если вы используете XIB построить пользовательский интерфейс, см RMDateSelectionViewController
Если используется код для создания пользовательского интерфейса см ZCImagePickerController
Если вы хотите изменить свой нынешний язык мгновенно, вы должны внедрить несколько языков на свой собственный код. Обычно класс обрабатывает всю строку, отображаемую в вашем интерфейсе. Уведомление об изменении языка рекомендуется для каждого контроллера.
Вы можете использовать:
[[NSUserDefaults standardUserDefaults]
setObject:[NSArray arrayWithObjects:@"en", nil]
forKey:@"AppleLanguages"];
установить свой настоящий язык, но его не может измениться мгновенно, а также не рекомендуется.
Изменение языка происходит в зависимости от выбора языка в моем приложении. Мое сомнение заключается в том, как изменить имя ячейки таблицы с помощью метода cellForRowAtIndexPath и всех частей пользовательского интерфейса. Я использую NSSNotificationCenter для обновления ViewControllers. – Amit89
@ Сообщение Amit89 не рекомендуется добавлять дополнительный код, используя макрос, в котором когда-либо вы будете использовать уведомление, я дал образец в своем ответе, если не ясно. – amar
- 1. Android: обновить текущий фрагмент после изменения языка
- 2. Нарушения приложения ios после изменения языка
- 3. Предотвращение перезапуска приложения IOS после изменения языка
- 4. Как обновить ActionBar после изменения языка в PreferenceFragment?
- 5. Изменение языка внутри приложения
- 6. Обновление интерфейса после изменения языка в NSUserDefaults
- 7. Изменение языка приложения после перезапуска приложения
- 8. iPhone - неправильная локализация после изменения языка
- 9. Обновите приложение для Android после изменения языка
- 10. Обновить страницу после изменения табуляции
- 11. undefined ids после изменения языка
- 12. onActivityResult сбой после изменения языка
- 13. Обновить UIViewController в "viewDidLoad"
- 14. Обновить картинку после изменения
- 15. Переключение языка внутри приложения android
- 16. Пользовательский UIView внутри кнопки UIViewController нажмите, чтобы обновить UIViewController
- 17. multiselect.js обновить после изменения
- 18. Обновить модуль после изменения
- 19. Потяните, чтобы обновить UITableView внутри UIViewController
- 20. после screenRotation языка приложения Chage
- 21. Обновить div после изменения окна
- 22. Изменения основного языка приложения iTunesConnect не распространяются
- 23. Django - изменить язык без изменения языка приложения
- 24. Как обновить изменения после обновления?
- 25. Как изменить язык приложения Android без изменения языка телефона?
- 26. Перенаправление URL после изменения языка, на JavaScript
- 27. приложение не запускается после изменения языка
- 28. вид идентификатор является нулевым после изменения языка
- 29. Изменения UIViewController к UIView
- 30. Обновить ListView после изменения listItem
поиск о локализации ... его встроенный приятель вам не нужно ничего делать – amar
спасибо @amar за ответ. Я хочу изменить язык в своем приложении, но не в устройстве. Поэтому для этого, когда пользователь выбирает язык в приложении, он должен быть отражен во всех диспетчерах просмотра, и для этого я использую NSNotificationCenter во всех моих классах ViewController. Так что эти изменения произойдут сразу после выбора языка в приложении. Таким образом, мой вопрос заключается в том, как табличное имя ячейки с переопределением таблицы. Любая помощь будет оценена. – Amit89
Привет, я сделал то же самое в своем приложении, добавив несколько языков в plist, а затем на основе глобальной переменной выберем его оттуда. вы также можете определить макрос LocalizedString (), чтобы использовать каждый из них. Если вам нужен код, но потребуется некоторое время. –
amar