我尝试过一些没有用过的东西(我想到的更多东西)。
使用[self dismissViewControllerAnimated:YES completion:nil];
时,我需要它来运行我要回到的控制器的viewDidLoad
方法。
我该怎么做?我想也许在completion
中,它会访问这个类的viewDidLoad
而不是我正在恢复的那个。{/ p>
答案 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。