dismissViewControllerAnimated不会再次加载viewDidLoad

时间:2013-07-22 09:35:11

标签: ios objective-c cocoa-touch

我尝试过一些没有用过的东西(我想到的更多东西)。

使用[self dismissViewControllerAnimated:YES completion:nil];时,我需要它来运行我要回到的控制器的viewDidLoad方法。

我该怎么做?我想也许在completion中,它会访问这个类的viewDidLoad而不是我正在恢复的那个。{/ p>

4 个答案:

答案 0 :(得分:9)

ViewDidLoad方法只调用一次。调用dismissViewControllerAnimated后调用parentViewControllers viewWillAppear方法。

将代码从viewDidLoad写入viewWillAppear

答案 1 :(得分:1)

仅在将视图加载到内存时调用viewDidLoad。您应该使用viewDidAppear。在那里你甚至可以实现

-(void)viewDidAppear:(BOOL)animated{
    [self viewDidLoad];
}

虽然这似乎不是一个好主意。也许你应该将viewDidLoad中的一些代码移动到一个单独的方法中?

答案 2 :(得分:1)

只有再次创建对象时才会调用

viewDidLoad方法。 您可以在viewWillAppear中编写代码。

答案 3 :(得分:0)

Moxy的评论我认为最接近你所期待的。有时你想要一个viewController被重新加载,因为你想要的方法只能在第一次加载时运行,而不是每次出现视图时(在我的情况下它是注册通知)

如果你打电话:

      [self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

然后,您的视图将在下次显示时调用ViewDidLoad。

相反,如果你打电话:

      [self dismissViewControllerAnimated:YES completion:nil];

然后你的视图在再次出现时不会调用viewDidLoad。