Ios 返回UINavigationController时,视图将显示为未调用

Ios 返回UINavigationController时,视图将显示为未调用,ios,swift,viewwillappear,Ios,Swift,Viewwillappear,我调用了一些代码来更改导航控制器中viewcontroller的ViewWillAspect部分中的语言 当我点击后退按钮时,语言变化不会发生,即使我有代码让它出现在视图中。唯一一次它切换是当我一直回击到原始屏幕,然后开始向前移动时,它会改变。有没有办法让视图中的功能正常工作 这是我的代码,我正在使用一个改变语言的播客: //MARK: Language change //used to change language text for imediate screens func

我调用了一些代码来更改导航控制器中viewcontroller的ViewWillAspect部分中的语言

当我点击后退按钮时,语言变化不会发生,即使我有代码让它出现在视图中。唯一一次它切换是当我一直回击到原始屏幕,然后开始向前移动时,它会改变。有没有办法让视图中的功能正常工作

这是我的代码,我正在使用一个改变语言的播客:

  //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)
  }

实现navigationcontroller委托方法

navigationController:willShowViewController:animated:
navigationController:didShowViewController:animated:

视图将出现
方法仅添加通知观察者。在
视图中删除观察者将消失
。这意味着只有在视图可见时发送了
LCLLanguageChangeNotification
通知时才会调用
setText

由于导航行为,视图一离开屏幕,更新就会停止

为确保文本得到更新,您还需要在
视图中调用
setText

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

我创建了这个小类来解决这个问题。 只需将其设置为导航控制器的代理,并在视图控制器中实现一个或两个简单的方法,当视图即将显示或已通过NavigationController显示时,将调用这些方法


你能给我们看一下
viewwillappeage()
?@LukeVanIn我用我的代码更新了这个问题我不熟悉这些方法,你会如何实现它们?@Luke Van就是这么做的!谢谢!