iPhone viewWillAppear 不触发 [英] iPhone viewWillAppear not firing

查看:28
本文介绍了iPhone viewWillAppear 不触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我读过很多关于当您没有正确创建视图层次结构时viewWillAppear 出现问题的帖子.恰到好处.我的问题是我不明白这意味着什么.

I've read numerous posts about people having problems with viewWillAppear when you do not create your view hierarchy just right. My problem is I can't figure out what that means.

如果我创建一个 RootViewController 并在该控制器上调用 addSubView,我希望为 viewWillAppear 事件.

If I create a RootViewController and call addSubView on that controller, I would expect the added view(s) to be wired up for viewWillAppear events.

有没有人有一个复杂的编程视图层次结构的例子,它可以在每个级别成功接收 viewWillAppear 事件?

Does anyone have an example of a complex programmatic view hierarchy that successfully receives viewWillAppear events at every level?

Apple 的文档状态:

Apple's Docs state:

警告:如果将属于视图控制器的视图直接添加到视图层次结构中,视图控制器将不会收到此消息.如果您在视图层次结构中插入或添加一个视图,并且它有一个视图控制器,您应该直接向关联的视图控制器发送此消息.未能向视图控制器发送此消息将阻止显示任何关联的动画.

Warning: If the view belonging to a view controller is added to a view hierarchy directly, the view controller will not receive this message. If you insert or add a view to the view hierarchy, and it has a view controller, you should send the associated view controller this message directly. Failing to send the view controller this message will prevent any associated animation from being displayed.

问题是他们没有描述如何做到这一点.直接"是什么意思?您如何间接"添加视图?

The problem is that they don't describe how to do this. What does "directly" mean? How do you "indirectly" add a view?

我对 Cocoa 和 iPhone 还是很陌生,所以如果除了基本的 Hello World 废话之外,还有来自 Apple 的有用示例,那就太好了.

I am fairly new to Cocoa and iPhone so it would be nice if there were useful examples from Apple besides the basic Hello World crap.

推荐答案

如果您使用导航控制器并设置其委托,则不会调用视图{Will,Did}{Appear,Disappear} 方法.

If you use a navigation controller and set its delegate, then the view{Will,Did}{Appear,Disappear} methods are not invoked.

您需要改用导航控制器委托方法:

You need to use the navigation controller delegate methods instead:

navigationController:willShowViewController:animated:
navigationController:didShowViewController:animated:

这篇关于iPhone viewWillAppear 不触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆