当 ViewController 由于呈现新的 ViewController 而不再可见时,我想处理代码。
我不能使用 ViewWillDisappear 等,因为从技术上讲, Controller 从来没有从堆栈中解散——你只是看不到它。
我可以使用什么过程以便在 Controller 不再可见(即最顶层)以及它再次可见时运行代码?
编辑:
这里似乎有些困惑 - 不知道为什么。
我有一个 View Controller 。
我使用下面的代码来展示另一个 Controller
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let navController = storyboard.instantiateViewControllerWithIdentifier("NavController") as! UINavigationController
let thisController = navController.viewControllers[0] as! MyController
self.presentViewController(navController, animated: true, completion: nil)
此 Controller 不会在前一个 Controller 上触发 viewWillDisappear,因为前一个 View 没有被删除 - 只是隐藏。
当这个 View 被隐藏(即不可见)时,我需要处理代码,更重要的是,当它再次可见时处理代码。
最佳答案
提交 UIViewController
时如果演示样式已设置为 UIModalPresentationOverCurrentContext
它不调用 viewWillDisappear
和相关的方法,因为 View 永远不会消失或隐藏。
检查是否是这种情况的一个简单测试是将您正在使用的 NavController 设置为具有清晰的背景颜色。如果您这样做并呈现 NavController,您仍然可以查看 NavController 内容下方的第一个 UIViewController。那么你正在使用 UIModalPresentationOverCurrentContext
这就是为什么 viewDidDisappear
不叫。
看看 Serghei Catraniuc (https://stackoverflow.com/a/30787112/4539192) 引用的答案。
关于ios - 当 ViewController 被呈现的 ViewController 覆盖时触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40422894/