我有一个使用storyboard和导航控制器的应用程序。在应用程序流程的某个阶段,我的视图堆栈上大约有四个视图,此时我必须弹出所有视图,直到回到根视图。然后我需要手动推入另一个视图。
我尝试了各种方法都没有成功。我尝试使用内置的API调用:
[self.navigationController popToRootViewControllerAnimated:YES];
在这里,我尝试通过引用根视图并调用转场方法来调用推送转场。
RootView *obj = [[RootView alloc] init];
[obj callSegue];
或者
[self.navigationController performSegueWithIdentifier:@"pushView" sender:self];
无论如何,我对这个问题完全感到困惑。有人可以帮忙吗?
更新:
谢谢大家的回复。我继续搜索并找到了一个解决方案,肯定不止一个。
// Reference to navigation controller. Apparently if you use self.navigationController in a popToRootViewController call it sets self.navigationController to nil.
UINavigationController *navigationController = self.navigationController;
[navigationController popToRootViewControllerAnimated:NO];
// Reference to view to push - must set storyboard ID in inspector
ViewToPush *viewRef = (ViewToPush *)[self.storyboard instantiateViewControllerWithIdentifier:@"gameView"];
[navigationController pushViewController:gameView animated:NO];