Obj C - 一个接一个地呈现视图控制器
Obj C - Present view controllers one after another
这可能很简单,但我正在绞尽脑汁找出问题所在。
我正在展示一个 UINavigationController
,一旦它被取消,我需要展示另一个 UITabBarController
,当我这样做时,我得到以下错误
Warning: Attempt to present < MyTabBarViewController: 0xXXXX > on <
ParentViewController: 0XXX> whose view is not in the window hierarchy!
UINavigationController *nav = [self.storyboard instantiateViewControllerWithIdentifier:@"myWeb"];
MyWebViewController *webVC = (MyWebViewController *)nav.topViewController;
[self presentViewController:webVC animated:YES completion:nil];
我可以看到 MyWebViewController
的呈现没有任何问题,一旦上一个被驳回,我尝试像下面那样呈现下一个,我收到上述警告。
MyTabBarViewController *trController = [[MyTabBarViewController alloc] init];
[self presentViewController:trController animated:NO completion:nil];
只有当 MyWebViewController 完成关闭时,您才需要呈现 MyTabBarViewController,
尝试像这样添加延迟:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
MyTabBarViewController *trController = [[MyTabBarViewController alloc] init];
[self presentViewController:trController animated:NO completion:nil];
});
如果可行,您将需要摆脱它(以防您希望保持代码整洁)并在 completion
中调用委托方法,告诉父级 MyTabBarViewController 已准备好显示.
这可能很简单,但我正在绞尽脑汁找出问题所在。
我正在展示一个 UINavigationController
,一旦它被取消,我需要展示另一个 UITabBarController
,当我这样做时,我得到以下错误
Warning: Attempt to present < MyTabBarViewController: 0xXXXX > on < ParentViewController: 0XXX> whose view is not in the window hierarchy!
UINavigationController *nav = [self.storyboard instantiateViewControllerWithIdentifier:@"myWeb"];
MyWebViewController *webVC = (MyWebViewController *)nav.topViewController;
[self presentViewController:webVC animated:YES completion:nil];
我可以看到 MyWebViewController
的呈现没有任何问题,一旦上一个被驳回,我尝试像下面那样呈现下一个,我收到上述警告。
MyTabBarViewController *trController = [[MyTabBarViewController alloc] init];
[self presentViewController:trController animated:NO completion:nil];
只有当 MyWebViewController 完成关闭时,您才需要呈现 MyTabBarViewController, 尝试像这样添加延迟:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
MyTabBarViewController *trController = [[MyTabBarViewController alloc] init];
[self presentViewController:trController animated:NO completion:nil];
});
如果可行,您将需要摆脱它(以防您希望保持代码整洁)并在 completion
中调用委托方法,告诉父级 MyTabBarViewController 已准备好显示.