为了账号安全,请及时绑定邮箱和手机立即绑定

iPhone viewWillAppear没有开火

/ 猿问

iPhone viewWillAppear没有开火

iPhone viewWillAppear没有开火

我读过许多有关职位有问题的人viewWillAppear,当你不创建视图层次只是权利。我的问题是我无法弄清楚这意味着什么。

如果我在该控制器上创建RootViewController并调用addSubView,我希望添加的视图可以连接到viewWillAppear事件。

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

Apple的Docs声明:

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

问题是他们没有描述如何做到这一点。“直接”是什么意思?你如何“间接”添加一个视图?

我对Cocoa和iPhone相当新,所以如果除了基本的Hello World垃圾之外还有来自Apple的有用示例,那将会很不错。


查看完整描述

3 回答

?
胡说叔叔

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

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

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


查看完整回答
反对 回复 2019-08-26
?
天天世纪

我遇到了同样的问题。在将其viewWillAppear添加为子视图之前,只需向视图控制器发送消息即可。(有一个BOOL参数告诉视图控制器它是否被动画显示。)

[myViewController viewWillAppear:NO];

查看Metronome示例中的RootViewController.m。

(我实际上发现Apple的示例项目很棒。比HelloWorld更多;)


查看完整回答
反对 回复 2019-08-26
?
函数式编程

我终于找到了这个工作的解决方案!

UINavigationControllerDelegate

我认为它的要点是将你的导航控件的委托设置为它所在的viewcontroller,并实现UINavigationControllerDelegate它的两种方法。辉煌!我很兴奋,我终于找到了解决方案!


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 93 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信