无法在不创建新实例的情况下导航回原始选项卡

时间:2014-06-09 07:30:51

标签: ios

这是我在故事板中的设置。

我尝试使用此代码:(在 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中,因为它们在删除导航控制器时过去一直在消失?

对于许多问题提前抱歉,但我已经被困了一段时间。

1 个答案:

答案 0 :(得分:1)

第一件事

删除所有这些导航控制器。你只需要一个。

<强>第二

IBAction中的代码是创建一个全新的TabBarController实例并将其放在当前堆栈上(这是如何解决内存问题)。

<强>第三

你可能想要的是一个展开segue(可能)或像这样的代码......

- (IBAction)confirmClicked:(UIBarButtonItem *)sender
{
    //EXECUTE NAVIGATION
    UITabBarController * tabControl = [self.tabBarController setSelectedIndex:1];
}