2

我尝试了一些没有真正奏效的东西(我想到了更多的东西)。

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

我怎样才能做到这一点?我想也许在completion然而,它会访问viewDidLoad这个类的,而不是我恢复的那个。

4

4 回答 4

9

ViewDidLoad方法只调用一次。在dismissViewControllerAnimated被调用之后调用 parentViewControllersviewWillAppear方法。

写你的代码viewDidLoadviewWillAppear

于 2013-07-22T09:38:37.300 回答
1

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

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

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

于 2013-07-22T09:39:54.947 回答
1

viewDidLoad仅当您再次创建对象时才会调用该方法。您可以viewWillAppear改为编写代码。

于 2013-07-22T09:41:23.920 回答
0

我相信 Moxy 的评论最接近您正在寻找的内容。有时您希望重新加载 viewController,因为您可能希望仅在第一次加载时运行某些方法,而不是在每次视图出现时运行(在我的情况下,它正在注册通知)

如果你打电话:

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

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

相反,如果您调用:

      [self dismissViewControllerAnimated:YES completion:nil];

然后,您的视图在再次呈现时将不会调用 viewDidLoad。

于 2013-10-31T20:30:25.470 回答