我是IOS的新手。 我的问题是,我有一些视图控制器如NavigationController,mainVC,VC1,VC2,VC3,CameraVC。在cameraVC中,我有一个已完成动作的完成按钮。这些所有View-Controller都在NavigationController中推送。显示VC1,而不是在nav-controller中推送。 doneClicked函数实现了poptorootviewcontroller。当我点击完成按钮时,它让我到VC1但不是主VC。有没有办法让我可以将所有视图控制器弹出到VC1,然后自动将VC1解除为mainVC。
答案 0 :(得分:0)
将您的MainVC作为根视图控制器,并在完成按钮的IBAction中使用代码弹出到MainVC。
[self.navigationController popToRootViewControllerAnimated:YES];
希望它有所帮助。
答案 1 :(得分:0)
弹出视图控制器
[self.navigationController popToRootViewControllerAnimated:YES];
并关闭呈现的视图控制器
[self dismissViewControllerAnimated:NO completion:nil]
答案 2 :(得分:0)
[self.navigationController setViewControllers:@[mainVC]];
我认为此代码适用于您的情况。 iOS开发者库:
使用指定的项目替换当前由导航控制器管理的视图控制器。
- (void)setViewControllers:(NSArray *)viewControllers
animated:(BOOL)animated
您必须在解除当前视图控制器后执行此操作。使用委托
现在让我们假设你的导航堆栈是空的,你的root是mainVC。你想要呈现VC1,只需出示它。但是你应该给mainVC代表一个解雇VC1之后会发生什么。例如,您从mainVC呈现VC1。并且你想在解除VC1之后推送VC2。没关系,只需在mainVC中有一个委托,所以在这个方法中
[self.navigationController pushViewController:VC2];
当前视图不会影响您的导航堆栈。它不在你的堆栈中。因此,每当你从控制器中解雇它时,你应该给该控制器的代表一个解雇后会发生什么。
试试吧。 希望能帮助到你。