我尝试了一些没有真正奏效的东西(我想到了更多的东西)。
使用时,[self dismissViewControllerAnimated:YES completion:nil];
我需要它来运行viewDidLoad
我要返回的控制器的方法。
我怎样才能做到这一点?我想也许在completion
然而,它会访问viewDidLoad
这个类的,而不是我恢复的那个。
我尝试了一些没有真正奏效的东西(我想到了更多的东西)。
使用时,[self dismissViewControllerAnimated:YES completion:nil];
我需要它来运行viewDidLoad
我要返回的控制器的方法。
我怎样才能做到这一点?我想也许在completion
然而,它会访问viewDidLoad
这个类的,而不是我恢复的那个。
ViewDidLoad
方法只调用一次。在dismissViewControllerAnimated
被调用之后调用 parentViewControllersviewWillAppear
方法。
写你的代码viewDidLoad
到viewWillAppear
viewDidLoad 仅在视图加载到内存时调用。您可能应该使用 viewDidAppear。在那里你甚至可以实施
-(void)viewDidAppear:(BOOL)animated{
[self viewDidLoad];
}
虽然这似乎不是一个好主意。也许您应该将 viewDidLoad 中的一些代码移到单独的方法中?
viewDidLoad
仅当您再次创建对象时才会调用该方法。您可以viewWillAppear
改为编写代码。
我相信 Moxy 的评论最接近您正在寻找的内容。有时您希望重新加载 viewController,因为您可能希望仅在第一次加载时运行某些方法,而不是在每次视图出现时运行(在我的情况下,它正在注册通知)
如果你打电话:
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
然后,您的视图将在下次呈现时调用 ViewDidLoad。
相反,如果您调用:
[self dismissViewControllerAnimated:YES completion:nil];
然后,您的视图在再次呈现时将不会调用 viewDidLoad。