在视图控制器上调用viewDidLoad以模态方式显示

时间:2012-10-24 02:44:29

标签: iphone objective-c ios

我注意到当我以模态方式呈现视图控制器时,从未调用viewDidLoad方法。

即:

InfoViewController *v = [[Global get] infoVC];
[self presentModalViewController: v animated: true];

无论如何我可以打电话给它吗? 我把viewDidLoad代码放在ViewDidAppear中,我担心这些项目会在视图中被绘制两次吗?如果它打开两次?还是会从内存中删除?

2 个答案:

答案 0 :(得分:2)

viewDidLoad仅在创建控制器时被调用。所以如果你的: [[Global get] infoVC] 没有分配和返回控制器(返回已经创建的控制器)viewDidLoad将不会被调用。 在viewDidAppear中,可以安全地调整与控制器相关的视图。如果您在viewDidLoad中创建它们,它们将已存在。

或者如果你想要viewDidLoad调用创建一个新的控制器。

infoViewController *v = [[InfoViewController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController: v animated: true];
[v release];

答案 1 :(得分:1)

如果您只是在viewDidLoad中向视图中添加项目,则可以将该代码放在loadView中。