“viewWillAppear”没有使用iPhone 4.3模拟器调用xcode 4.5

时间:2012-12-11 01:14:12

标签: iphone ios

“viewWillAppear”不能在xcode 4.5中使用iphone 4.3模拟器调用,但如果它在iPhone 5.0或iPhone 6.0模拟器中运行,则会调用此方法。

为什么呢?如果我想在控制器的视图出现在ios 4.3中时做什么我该怎么办?

2 个答案:

答案 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了解详细信息。