2016-07-07 17 views
0

У меня есть код, который я вызываю, который меняет язык в секции viewWillAppear контроллера view внутри контроллера навигации. enter image description hereviewWillAppear не вызывается при возвращении на UINavigationController

Когда я нажимаю кнопку «Назад», изменение языка не происходит, хотя у меня есть код для него в viewWillAppear. Единственный момент, когда он переключается, - это когда я полностью отбрасываю исходный экран, а затем начинаю двигаться вперед, это изменяется. Есть ли способ иметь функцию в viewWillAppear?

Вот мой код, я использую язык меняющийся стручок:

//MARK: Language change 

    //used to change language text for imediate screens 
    func setText(){ 
    locationsLabel.text = "Locations".localized() 
    languageLabel.text = "Languages".localized() 
    termsOfUseLabel.text = "Terms of Use".localized() 
    privacyPolicyLabel.text = "Privacy Policy".localized() 
    pushNotificationsLabel.text = "Push Notifications".localized() 
    contactUsLabel.text = "Contact Us".localized() 
    } 


    // Changes text to current language 
    override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "setText", name: LCLLanguageChangeNotification, object: nil) 
    } 

    // Remove the LCLLanguageChangeNotification on viewWillDisappear 
    override func viewWillDisappear(animated: Bool) { 
    super.viewWillDisappear(animated) 
    NSNotificationCenter.defaultCenter().removeObserver(self) 
    } 
+1

Можете ли вы показать нам код для 'viewWillAppear()'? –

+0

@ LukeVanIn Я обновил вопрос с помощью своего кода – SwiftyJD

ответ

1

Метод viewWillAppear только добавление уведомления наблюдателя. Наблюдатель удаляется в viewWillDisappear. Это означает, что setText будет вызываться только в том случае, если уведомление LCLLanguageChangeNotification отправлено , пока вид виден.

Обновление останавливается, как только вид отключается из-за поведения навигации.

Для того, чтобы текст был обновлен, также необходимо вызвать setText внутри viewWillAppear:

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    setText() 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "setText", name: LCLLanguageChangeNotification, object: nil) 
} 
+1

@ Люк Ван В Это сделал! Большое спасибо! – SwiftyJD

0

Реализовать navigationcontroller методы делегата

navigationController:willShowViewController:animated: 
navigationController:didShowViewController:animated: 
+0

Я не знаком с этими методами, как бы вы их реализовали? – SwiftyJD