我在ViewController中执行UIAlertViewController时遇到问题。
这就是我目前所拥有的
func displayLoginResult(viewModel: Login.PerformLogin.ViewModel) {
endLoader(loader: loaderLogin)
if let errorMessage = viewModel.displayedError {
print(errorMessage.message)
let alert = UIAlertController(title: "Error", message: "Enter data in Text fields", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}
else {
router.navigateToGroupsScene()
}
}
我尝试删除DerivedData,但没有。我只考虑viewModel.displayedError不是nil的情况(不是其他情况,只是if)。我已经看过我是否评论过这一行:
self.presentViewController(alert, animated: true, completion: nil)
一切正常,但显然任何Dialog都显示不是我想要的。我有点沮丧,因为我从未遇到过像这样的问题而且Xcode没有提供太多信息。
您需要的任何进一步信息,请告诉我,我会为您提供!
非常感谢你。
答案 0 :(得分:0)
看起来您忘记删除观察者,将此代码添加到您的LoginViewController类:
override func viewDidDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil)
}
答案 1 :(得分:0)
请尝试使用以下代码:
func displayLoginResult(viewModel: Login.PerformLogin.ViewModel) {
endLoader(loader: loaderLogin)
if let errorMessage = viewModel.displayedError {
print(errorMessage.message)
let alert = UIAlertController(title: "Error", message: "Enter data in Text fields", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.presentViewController(alert, animated: true, completion: nil)
})
}
else {
router.navigateToGroupsScene()
}
}