sno*_*und 4 objective-c viewdidload ios presentviewcontroller
我正在实现自己的"后退"按钮.其中onClick,以下代码在ViewController被解雇的(VC)中执行:
navigationStack navigationStack,然后使用它presentViewController
后面的工作是视觉上有效的 - 即当前VC消失,之前VC出现.但是,viewDidLoad不调用该方法.因此,屏幕不会更新数据更新viewDidLoad.
[self dismissCurrentViewController:self completion:^{
[TWStatus dismiss];
FHBaseViewController *vcToDisplay = [[FHDataManager sharedInstance] popNavigationStack];
[vcToDisplay.homeVC presentViewController:vcToDisplay animated:NO completion: ^{ }];
}];
Run Code Online (Sandbox Code Playgroud)
问题:
viewDidLoad在presentViuewController使用时总会被调用?viewDidLoadVC#2中的一个名为ONLY的方法"构建"屏幕.iOS如何在不显示屏幕的情况下显示viewDidLoad?顺便说一下,我没有使用故事板.任何帮助表示赞赏!
我的猜测是viewWillAppear被调用但viewDidLoad不是,至少不是你预期的时候. viewDidLoad应该调用一次,但是根据您管理视图控制器的方式,viewDidLoad每次出现视图时都可能不会触发(在加载后会发生).
The completion handler is called after the viewDidAppear: method is called on the presented view controller.来自presentViewController doc
所以把它放在代码中,在调用时使用断点,super并在发生此转换时验证它是否被调用.
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
}
Run Code Online (Sandbox Code Playgroud)
编辑:既然你验证了它viewWillAppear被调用,那么我会说它是由你如何管理视图控制器生命周期.即使使用标准UINavigationController,viewDidLoad也不会在导航堆栈上弹出项目时显示视图时调用.viewWillAppear如果你没有使用,我会把你的逻辑移到UINavigationController
| 归档时间: |
|
| 查看次数: |
2797 次 |
| 最近记录: |