use*_*546 8 iphone uinavigationcontroller viewcontroller ios
我怀疑需要清楚..我有堆栈和导航控制器.现在当堆栈加载时viewDidLoad viewWillAppear viewDidAppear将被调用.当我点击一些按钮然后这个按钮把我推到新的堆栈,现在新的堆栈给了我后面的选项..现在当我点击导航控制器的背面viewWillAppear..为什么只会被调用..为什么不viewDidLoad和不viewDidAppear
Kri*_*dra 17
堆栈是后进先出(LIFO),因此当您将新视图控制器推送到堆栈时,先前的视图控制器不会被破坏(并且它们保留在内存中).当您弹回时,不需要重新创建Viewcontroller,因为它已经在内存中.所以只能viewWillAppear被召唤.
至于为什么viewDidAppear在这种情况下没有被调用,我不记得我在哪里读过这个,但是viewDidAppear在你的UIViewController视图被添加到应用程序的UIWindow heirarchy之后被调用.这个过程是在第一次显示UIViewController之前完成的.
viewDidLoad仅在viewControllers视图加载到内存时调用.它会在什么时候完成
在您的情况下,当您弹回时,viewController已经加载,因此无需viewDidLoad再次调用.
Has*_*nka 13
ios ui的完整生命周期在这里解释.
http://www.verydemo.com/demo_c134_i4568.html
注意:Abizern发表评论:对于iOS5及更早版本,这是正确的.iOS6不再卸载视图.
| 归档时间: |
|
| 查看次数: |
6455 次 |
| 最近记录: |