iOS 7 新的 swipe-to-pop 手势对 UINavigationController
的 View Controller 生命周期有何影响? ?
最佳答案
iOS 7 中的新功能是 UINavigationController
中的滑动弹出手势;您可以从左到右滑动手指来执行通常使用后退按钮完成的操作。您需要注意的是,pop 过渡是可取消的。
点击后退按钮仍然可以按您期望的方式工作:
viewWillDisappear
被称为 viewDidDisappear
被称为 完成滑动弹出就像点击后退按钮
viewWillDisappear
被称为 viewDidDisappear
被称为 取消的滑动弹出就像这样
viewWillDisappear
被称为 viewWillAppear
被称为 viewDidAppear
被称为 相应地更新您的期望和 View 生命周期方法。
值得注意的是
viewWillDisappear
在所有情况下都会调用,即使用户中止弹出手势。这可能被证明是谎言;如果滑动弹出手势被中止,您的 View 不会消失,是吗?像我们所有人一样,我努力平衡
addObserver/removeObserver
在我的应用程序中调用以防止崩溃。我重写了 View Controller 生命周期方法 viewWillAppear/viewWillDisappear
做家务,维护一个setupPerformed
标志以防止在 View Controller 的生命周期内多次添加观察者。此外,我依靠this trick确定 View Controller 是否即将从导航 Controller 的堆栈中弹出并随后释放,以便我可以知道何时准确地拆除我的观察者。iOS 7 复杂化了这种模式。当
viewWillDisappear
时,我不能再依赖 View Controller 被拆除。叫做。我不得不期待它可能会转身,大喊“开个玩笑”,然后继续调用viewWillAppear/viewDidAppear
。重新来过。
关于uinavigationcontroller - 在 iOS7 中从 UINavigationController 滑动弹出时查看 Controller 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18927878/