poptorootviewcontroller和dismiss到mainViewController

时间:2015-04-01 12:40:13

标签: ios xcode

我是IOS的新手。 我的问题是,我有一些视图控制器如NavigationController,mainVC,VC1,VC2,VC3,CameraVC。在cameraVC中,我有一个已完成动作的完成按钮。这些所有View-Controller都在NavigationController中推送。显示VC1,而不是在nav-controller中推送。 doneClicked函数实现了poptorootviewcontroller。当我点击完成按钮时,它让我到VC1但不是主VC。有没有办法让我可以将所有视图控制器弹出到VC1,然后自动将VC1解除为mainVC。

3 个答案:

答案 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

source

您必须在解除当前视图控制器后执行此操作。使用委托

现在让我们假设你的导航堆栈是空的,你的root是mainVC。你想要呈现VC1,只需出示它。但是你应该给mainVC代表一个解雇VC1之后会发生什么。例如,您从mainVC呈现VC1。并且你想在解除VC1之后推送VC2。没关系,只需在mainVC中有一个委托,所以在这个方法中

[self.navigationController pushViewController:VC2];

当前视图不会影响您的导航堆栈。它不在你的堆栈中。因此,每当你从控制器中解雇它时,你应该给该控制器的代表一个解雇后会发生什么。

试试吧。 希望能帮助到你。