当我在视图之间来回切换时,我的viewDidLoad第二次没有被调用?

时间:2010-11-08 00:21:33

标签: iphone cocoa-touch ipad uikit viewdidload

所以我有两个观点。启动应用程序时会加载一个视图。然后,当我按下该视图上的按钮时,它会加载另一个视图。

- (IBAction)triggerGame
{

leveldata = [[NSMutableDictionary alloc] init];

[leveldata setValue:@"hide" forKey:@"shootarrow"];

[leveldata writeToFile:[self levelFilePath] atomically:YES];
[leveldata release];


Papertoss_MaraAppDelegate *mainDelegate = (Papertoss_MaraAppDelegate *)[[UIApplication sharedApplication] delegate];
[mainDelegate playGame];

}

此操作在委托实现中触发一个名为playGame的方法,如下所示:

- (void)playGame {

[levelView.view removeFromSuperview];
[self.window addSubview:[gameView view]];
[UIView commitAnimations];
}

这样可以很好地加载新视图。然后我有另一个按钮做同样的事情,但它让我回到第一个视图。而且它也很棒。我能够非常轻松地从一个视图导航到另一个视图。但我唯一的问题是,当我第二次尝试加载第二个视图时,不会再次调用viewDidLoad。我通过在viewDidLoad方法中使用NSLog()来测试它。

为了让我的应用做我想做的事,我需要再次调用viewDidLoad。我猜测,当我在它们之间切换时,我的视图可能没有完全卸载。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:9)

我认为你需要函数viewDidAppear。 viewDidLoad仅在每个视图中被调用一次,除非某些内容导致它卸载,例如内存警告。每次视图变得可见时都会调用viewDidAppear。

答案 1 :(得分:4)

你想要-viewDidAppear:用于“每次显示视图”的东西。