iOS 5.0视图生命周期问题
我在 iOS 5.0 上遇到了自定义视图控制器子类的奇怪行为。我没有在 iPad 应用程序中使用标准导航控制器等,但我自己展示了所有视图控制器 - 这就是为什么我需要手动调用 -viewWillAppear 和 viewDidAppear 方法。
从 iOS 5.0 开始,似乎在将视图控制器的视图添加为子视图时,这些方法会在视图的视图控制器实例上自动调用。这意味着在我的例子中这些方法被调用两次。
有什么建议吗?除了创建我自己的视图生命周期方法和重写整个应用程序之外?
多谢!
I'm facing strange behaviour of my custom view controller subclasses on iOS 5.0. I'm not using standart navigation controllers etc. in my iPad application, but I'm presenting all view controllers myself - this is why I needed to call -viewWillAppear and viewDidAppear methods manually.
Since iOS 5.0, it seems like when adding view controller's view as a subview, these methods are called automatically on view's view controller instance. Which means that these methods are called twice in my case.
Any suggestions? other than creating my own view life-cycle methods and rewriting whole app?
Thanks a lot!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将以下内容添加到您的 UIViewController 以禁用这些 -viewWill... 和 -viewDid... 方法的自动调用:
这将强制 iOS 5.0 在添加子视图时停止调用这些方法,并且不会破坏 iOS 4 的任何内容。 x。只要我继续支持 iOS 4.x 上的设备,我就会使用此方法。一旦我放弃对 iOS 4 的支持,我将重构我的代码以使用交换视图控制器的新方法(如 hypercrypt 发布的 Session 102 视频中所述)。
Add the following to your UIViewController to disable the automatic calling of those -viewWill... and -viewDid... methods:
This will force iOS 5.0 to stop calling those methods when adding subviews, and won't break anything with iOS 4.x. I'm using this method as long as I continue to support devices on iOS 4.x. Once I drop support for iOS 4 I will refactor my code to use the new approach of swapping view controllers (as described in the Session 102 video posted by hypercrypt).
请查看 WWDC11 的第 102 场会议 - 实现 UIViewController Containment。
在 iOS 5 上,您需要使用正确的视图控制器包含。
Check out Session 102 - Implementing UIViewController Containment from WWDC11.
On iOS 5 you need to use proper view controller containment.