这是我在故事板中的设置。
我尝试使用此代码:(在 IBAction 连接到最后一个VC中的UIBarButtonItem
):
- (IBAction)confirmClicked:(UIBarButtonItem *)sender
{
//EXECUTE NAVIGATION
UITabBarController * tabControl = [self.storyboard instantiateViewControllerWithIdentifier:@"TabBarControl"];
tabControl.selectedIndex = 1;
[self presentViewController:tabControl animated:YES completion:nil];
}
从此图片中的最后一个ViewController导航到堆栈中的第一个UINavigationController
。我被告知UINavigationController
s不应该像这样嵌套,并且只需要一个UINavigationController
,但是当我成功删除(我已经完成了至少5次)时,其他三个来自堆栈其余部分的UINavigationController
,我从常规ViewControllers中完全丢失了UINavigationBar
。
导航我目前使用' confirmClicked 的方式的问题:'方法,是我在层次结构中创建第一个UIViewController
的另一个实例。
我应该:
A)删除视图层次结构中所有不必要的UINavigationController
a,然后使用' popToRootViewController :'正确导航从最后一个VC到第一个?
B)尝试从最后一个VC导航到第一个VC的另一种方式,在视图层次结构中保留额外的UINavigationController
?
另外,如果我删除导航控制器,我如何将导航栏保留在UIViewControllers中,因为它们在删除导航控制器时过去一直在消失?
对于许多问题提前抱歉,但我已经被困了一段时间。
答案 0 :(得分:1)
行
第一件事
删除所有这些导航控制器。你只需要一个。
<强>第二强>
IBAction中的代码是创建一个全新的TabBarController实例并将其放在当前堆栈上(这是如何解决内存问题)。
<强>第三强>
你可能想要的是一个展开segue(可能)或像这样的代码......
- (IBAction)confirmClicked:(UIBarButtonItem *)sender
{
//EXECUTE NAVIGATION
UITabBarController * tabControl = [self.tabBarController setSelectedIndex:1];
}