【问题标题】:Basic: ViewController Hierachy基础:查看控制器层次结构
【发布时间】:2013-05-24 11:12:37
【问题描述】:

在第一个视图控制器 A 中,我调用“presentModalViewController”,然后将 B 视图控制器添加到屏幕上。

问题是,“A”视图控制器是否还在内存中?这意味着,在我将“B”视图控制器弹出屏幕后会调用 viewDidLoad 方法吗?

那么调用 pushModalViewController 方法呢?第一个视图控制器会留在内存中吗?

【问题讨论】:

  • 在谈论 A 和 B 时,您的意思是 UIViewController 吗?你应该改写你的问题。

标签: iphone uiviewcontroller presentmodalviewcontroller pushviewcontroller


【解决方案1】:

首先,您不能推送或呈现视图,它必须是UIViewController。 其次回答你的问题是真的,当推动或呈现“B”视图控制器时,“A”仍然保留在内存中。 当“B”视图控制器从堆栈中弹出时,“A”的viewDidLoad 不会被调用。 如果你想要一个 ViewController 中的函数,它应该总是被调用,那么你可以使用

-(void)viewWillAppear:(BOOL)animated
-(void)viewDidAppear:(BOOL)animated

即使在“B” ViewController 被弹出后,这些也会被调用。

【讨论】:

  • viewWillAppear 和 viewDidAppear 方法有什么不同?分别什么时候调用?
  • viewWillAppear:通知视图控制器其视图即将添加到视图层次结构中。意味着这个方法在 ViewController 出现之前被调用。请参阅developer.apple.com/library/ios/#documentation/UIKit/Reference/…:viewDidAppear:通知视图控制器其视图已添加到视图层次结构中。表示在视图出现后立即调用此方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多