我想做的事情似乎很简单,但我在网上找不到任何答案。我有登录屏幕作为根视图控制器,然后是标签栏控制器,在每个选项卡中我都有一个导航控制器。
我使用了故事板,层次结构如下所述,
Root VC
|
--- tabbar controller
|
---Navigation Controller
|
--- VC1
要求是从VC1导航回根视图控制器。我们怎样才能做到这一点?
答案 0 :(得分:3)
我使用“Unwind Segues”解决了问题。
步骤1)您需要的最小值是为目标视图创建视图控制器的子类(也就是先前在导航中弹出的视图,并且您想要展开它)并向其添加这样的方法(方法名称可以是您想要的任何名称,但它应该是唯一的,因为整个应用程序中的所有展开segue都列在一起):
- (IBAction)unwindToViewControllerNameHere:(UIStoryboardSegue *)segue {
//nothing goes here
}
步骤2)现在,在您的源视图(也就是您要放松的视图)中,只需将按钮中的segue或任何向下拖动到源视图底部的绿色“EXIT”图标。现在应该有一个连接到“ - unwindToViewControllerNameHere”
的选项就是这样,当你按下按钮时,你的segue会放松。我们可以移动到我们想要的任何视图控制器,其余的视图控制器将被释放。
答案 1 :(得分:2)
如果你有像
这样的控制器层次结构---导航控制器 - |根VC | --- tabbar控制器| ---导航控制器 - | --- VC1
并且VC1上有一个UIButton
,所以点击你想要移动到root viewcontroller(Root VC),然后使用:
-(void)moveToRootViewController {
//Move to root viewController
UINavigationController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"mainnav"];
self.view.window.rootViewController = controller;
}
此处mainnav
是根视图控制器导航控制器的故事板标识符。
根据图片白色viewcontroller是一个根视图控制器,tabBarController有两个带导航控制器的选项卡,如果你想从第二个选项卡viewcontroller UIButton
(黑色)移动到root viewcontroller,请点击然后使用上面的代码。
如果您有层次结构 ---导航控制器 - |根VC | --- VC1 ---- | --- VC2 ---- |
并希望从VC1或VC2转移到root viewcontroller(Root VC),然后使用:
[self.navigationController popToRootViewControllerAnimated:YES];
答案 2 :(得分:0)
使用以下代码
- (void) forRootViewCon {
UINavigationController *nav = (UINavigationController*) self.view.window.rootViewController;
UIViewController *root = [nav.viewControllers objectAtIndex:0];
[root performSelector:@selector(returnToRoot)];
}
通话方式名称为 returnToRoot
- (void)returnToRoot {
[self dismissViewControllerAnimated:NO completion:nil];
[self.navigationController popToRootViewControllerAnimated:YES];
}
或强>
[self.navigationController popToRootViewControllerAnimated:YES];
答案 3 :(得分:0)
这应该足够了。
[self.navigationController popToRootViewControllerAnimated:YES];
答案 4 :(得分:0)
您应该在导航控制器中启用Root VC:
---导航控制器 - |根VC | --- tabbar控制器| --- VC1
然后致电
[navController popToRootViewControllerAnimated:YES];
编辑: 我猜你有一些问题,包括导航控制器内的tabBar控制器?