如何处理导航后退按钮视图层次结构?

时间:2015-06-18 06:32:57

标签: ios xcode swift

这是问题

1)Rootview控制器 - MYAssetVC->嵌入了NavigationController,将按钮推送到另一个Addfilevc。

2)Addfilevc具有dropdownTextfield它将推送到另一个vc,tableview选中的行将显示在textfield中。

3)如果我从下拉文本字段中选择另一个值,它将再次推送到vc,我将选择。

导航栏后退按钮将导航到我想要处理此视图的所有视图层次结构。如果我去相同的视图,它应该只返回一次到最近的访问如何做到这一点。

因为我是iOS新手。提出任何建议。

从1-> 2-> 3

导航

导航backbtn 3-> 2-> 1

如果我像这样导航1-> 2-> 3->后退3-> 2再次2-> 3后按钮3-> 2再次2-> 3

如果我现在使用后退导航它会显示我应该导航的所有路线路径,例如1-> 2-> 3>如果有任何次数我在2& 2中​​执行动作,则3-> 2-> 1。 3。

1,2,3是视图控制器。

1 个答案:

答案 0 :(得分:1)

为后退按钮创建一个IBAction并使用popViewController。

[self.navigationController popViewControllerAnimated:YES];

这将帮助您返回一页。你必须在有后退按钮的所有页面中写这个,并且你想要返回一页。

如果你想直接回到rootViewController,试试这个:

[self.navigationController popToRootViewControllerAnimated:YES];

如果你想弹出到堆栈中的任何特定viewController,你运行一个for循环来找到你要导航到的viewController,然后简单地popToViewController,如下所示:

for (UIViewController *viewController in self.navigationController.viewControllers) {
    if ([viewController isKindOfClass:[Addfilevc class]]) {
        [self.navigationController popToViewController:viewController animated:YES];
    }
}

希望这有助于清除您的概念。

修改

在swift:

  • [self.navigationController popViewControllerAnimated:YES];将成为self.navigationController?.popViewControllerAnimated(true)

  • [self.navigationController popToRootViewControllerAnimated:YES];将成为navigationController?.popToRootViewControllerAnimated(true)

  • for循环如下:

如果您使用的是故事板,则可以使用此功能

let switchViewController = self.storyboard?.instantiateViewControllerWithIdentifier("view2") as ComposeViewController

self.navigationController?.pushViewController(switchViewController, animated: true)

for-in循环

if let viewControllers = self.navigationController?.viewControllers {
    for viewController in viewControllers {
        self.navigationController!.popToViewController(viewController, animated: true);
    } 
}

感谢。