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