【问题标题】:When will viewWill/DidAppear/Disappear is called anyway and how exactly does it work?viewWillDisAppear/Disappear 什么时候会被调用,它是如何工作的?
【发布时间】:2012-10-25 02:25:11
【问题描述】:

我知道 viewWillAppear 会在 duh.... 视图即将出现时被调用。

但是IOS怎么知道一个控制器的视图即将出现呢?

具体何时以及如何实施?

例如,childController.view 是否首先检查窗口是否是它的超级祖先之一?视图是否有指向它的控制器的指针?这究竟是如何工作的?每次添加视图时是否检查它的窗口是否是它的超级祖先以及它是否是 UIViewController 的视图出口?

例如,如果我添加 childcontroller.view 但未添加到任何正在调用的视图的子视图中。 viewWillAppear 会被调用吗?

childController 是否需要是 parentController 的子节点,这样才能在 parentController 的 viewWillAppear 被自动调用时调用 childController 的 viewWillAppear?

【问题讨论】:

    标签: objective-c xcode4.5


    【解决方案1】:

    视图由控制器使用- (void)loadView 方法加载。实现此方法以从 nib/storyboard 加载空白视图或视图。仅当您确实需要从头开始创建视图层次结构时才需要覆盖它。

    当首次请求view 属性的值并且控制器检测到该值为nil 时,所有魔法都会发生。所有的生命周期方法调用都由 UIViewController 处理。除了在需要时实现这些方法之外,您无需做任何事情。记住一件事:在调用 - (void)viewDidLoad 方法之前,不能保证视图已经加载。

    我从View Controller Programming Guide 了解到的有关控制器工作原理的所有信息。

    【讨论】:

    • 足够好。 +1。因此,当视图为 nil 并且我们访问它时,控制器调用 loadView。让我想一想。如果视图不是零怎么办。控制器如何知道视图正在消失?如果你从它的超级视图中删除视图怎么办。控制器如何收到通知?
    • 这就是我想了解的。 UIView 是否有指向其控制器的弱指针?如果没有,那么 UIViewController 怎么知道它的视图已被添加。
    • 如果您想了解与此相关的更多信息,您应该在 Apple 论坛上提问。您还可以浏览头文件以查看那里有哪些漂亮的信息块。我记得在 UIView.h 文件中有对 UIViewController 的引用;所以我假设 UIView 有对其控制器的引用。除此之外,我在这方面的知识有限。
    • 不是一个很好的答案,但你的答案是唯一的。没有其他答案时我会选择这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 2011-07-26
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多