“viewWillAppear”不能在xcode 4.5中使用iphone 4.3模拟器调用,但如果它在iPhone 5.0或iPhone 6.0模拟器中运行,则会调用此方法。
为什么呢?如果我想在控制器的视图出现在ios 4.3中时做什么我该怎么办?
答案 0 :(得分:1)
根据您的评论,问题似乎是iOS 4中缺少容器视图控制器。从5+开始,您明确表示能够将任何控制器的view
添加到视图中任何其他*,它将生成相应的view[Will/Did]Appear
,以及所有其他较新的消息 - viewDidLayoutSubviews
等。
在4中,您没有明确允许构建容器视图控制器,并且没有专门的向后链接将视图连接回其控制器。
因此,当您将导航控制器添加到视图时,它不会获得viewDidAppear
。因为它不知道它的视图已经出现,所以它不会告诉它包含的任何控制器它们的视图已经出现。
你可能做的最好的事情就是通过(i)检查你是否在iOS 4下运行来解决这个问题。 (ii)如果是,则将人工viewWillAppear/viewDidAppear/viewWillDisappear/viewDidDisappear
张贴到您所包含的控制人员身上。
根据个人经验,iOS 4(至少在4.3中)实际上实现了addChildViewController:
但不执行以后的文档版本所做的事情。因此,尽管它不是一个完全准确的功能检查,但我倾向于使用if([self respondsToSelector:@selector(presentingViewController)])
来确定是否需要手动传播这些消息。
[*]并且您还应该致电addChildViewController:
以确保所有消息在所有方向上正确移动
答案 1 :(得分:1)
我认为这可能与“View Controller Abusing”有关。检查容器视图控制器是否正确使用。您可以参考this post了解详细信息。