【发布时间】:2015-02-19 20:21:30
【问题描述】:
对于为什么不应直接调用诸如“viewWillDisappear”之类的方法,是否有人有官方参考?关于这个主题有几个现有的帖子,但没有官方链接,只有意见。
这样做是没有意义的,因为它从视图的生命周期管理中调用了“不循环”的方法。当然,它们可以并且在许多情况下被覆盖。
问题在于我遇到的一些代码是从某个方法调用“viewWillDisappear”的。真正需要调用的是'viewWillDisappear'方法的内容。
例子:
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
// The following two methods are the ones that need to be called below
[self someMethod];
[self anotherMethod];
}
- (void)delegateMethod
{
[self viewWillDisappear:YES];
// Do some other work
// View is moved off-screen, not deallocated, and therefore, does not "disappear"
}
本能地,直接调用任何视图层次结构方法(例如 viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear)似乎是错误的。如果你告诉“self”和“super”视图 viewWillDisappear 它可能会在框架中做一些事情,这可能会在以后导致问题。我认为这些方法应该只由框架调用。但是,这是我的观点,不是官方消息来源。头文件似乎没有提供任何相关信息。
任何帮助表示赞赏。
【问题讨论】:
-
如果您正确删除视图,则没有必要。您可以在要从父视图中添加和删除此视图的位置添加代码吗?确保您阅读了以下内容:developer.apple.com/library/ios/featuredarticles/… 特别是“实现自定义容器视图控制器”部分
-
不幸的是,代码太长,无法发布(不是我写的)。它本质上是添加到导航控制器中的。视图永远不会被删除。它根据需要滑入/滑出。
-
仅供参考
[self viewWillDisappear];应该是[self viewWillDisappear:YES];或[self viewWillDisappear:NO];...但无论如何以这种方式使用viewWillDisappear是没有意义的...
标签: ios viewcontroller