iPhone,addSubView 不调用 willViewAppear?
Posted
技术标签:
【中文标题】iPhone,addSubView 不调用 willViewAppear?【英文标题】:iPhone, addSubView doesn't call willViewAppear? 【发布时间】:2010-10-17 10:55:17 【问题描述】:我正在使用-addSubView
添加一个视图。我也在其他地方使用视图和presentModalViewController
。
-viewWillAppear
是用 presentModalViewController 调用的,但不是用 addSubView 调用的。
毫无疑问,这是显而易见的事情?
【问题讨论】:
【参考方案1】:viewWillAppear:
由父视图控制器在呈现另一个视图控制器时调用(例如,pushViewController:animated:
或 presentModalViewController:animated:
)。手动调用addSubview:
时永远不会调用它。
【讨论】:
【参考方案2】:上面的答案似乎并不正确,无论如何在 ios 6.1 中。当我使用这样的控制器创建视图时:
self.welcomeController = [[DPLWelcomeViewController alloc] initWithNibName:@"DPLWelcomeViewController" bundle:nil];
self.welcomeController.view.frame = self.window.screen.applicationFrame;
self.welcomeController.delegate = self;
[self.window.rootViewController.view addSubview:self.welcomeController.view];
-viewWillAppear 确实被调用(只要 self.welcomeController 是一个强属性)。
另一方面,当我这样做时:
DPLWelcomeViewController *welcomeController = [[DPLWelcomeViewController alloc] initWithNibName:@"DPLWelcomeViewController" bundle:nil];
welcomeController.view.frame = self.window.screen.applicationFrame;
welcomeController.delegate = self;
[self.window.rootViewController.view addSubview:welcomeController.view];
一旦此方法退出,ARC 就会对其进行清理,据我所知,-viewWillAppear 被发送到 nil。 (尽管我可以在屏幕上看到 Welcome 视图——我相信 rootViewController.views 保留了 view,但没有保留 viewController。)
【讨论】:
以上是关于iPhone,addSubView 不调用 willViewAppear?的主要内容,如果未能解决你的问题,请参考以下文章
iphone/ipad - 使用 Autoresize 和 addSubview 出现问题