Ios 如何处理导航返回按钮视图层次结构?

Ios 如何处理导航返回按钮视图层次结构?,ios,xcode,swift,Ios,Xcode,Swift,问题就在这里 1) Rootview控制器-MYAssetVC->嵌入导航控制器,点击另一个Addfilevc按钮 2) Addfilevc有dropdownTextfield,它将推送到另一个vc,tableview选中的行将显示在textfield中 3) 如果我从下拉文本字段中选择另一个值,它将再次推送到vc,我将在那里选择 导航栏后退按钮将导航到我想要处理的所有视图层次结构。如果我去同一个视图,它应该只导航回一次最近的访问如何做到这一点 因为我是iOS新手。提出任何建议 从1->2->3

问题就在这里

1) Rootview控制器-MYAssetVC->嵌入导航控制器,点击另一个Addfilevc按钮

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

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

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

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

从1->2->3导航

导航backbtn 3->2->1

如果我像这样导航1->2->3->backbutton 3->2->3 backbutton 3->2->3

如果我现在使用back导航,它将显示我的所有路线路径,如果我在2&3中执行任何次数的操作,它应该像1->2->3>和3->2->1一样导航


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

为后退按钮创建iAction并使用popViewController

[self.navigationController popViewControllerAnimated:YES];
这将帮助您返回一页。你必须在所有有后退按钮的页面上写下这句话,然后你想返回一页

如果要直接返回rootViewController,请尝试以下操作:

[self.navigationController popToRootViewControllerAnimated:YES];
如果要弹出到堆栈中的任何特定viewController,请运行for循环以查找要导航到的viewController,然后只需弹出到viewController,如下所示:

for (UIViewController *viewController in self.navigationController.viewControllers) {
    if ([viewController isKindOfClass:[Addfilevc class]]) {
        [self.navigationController popToViewController:viewController animated:YES];
    }
}
希望这有助于澄清您的概念

编辑

迅速:

  • [self.navigationController-popViewControllerAnimated:YES]将变为
    self.navigationController?.popViewControllerAnimated(true)

  • [self.navigationController popToRootViewControllerAnimated:YES]将变成
    导航控制器?.popToRootViewControllerAnimated(true)

  • for循环如下所示:

如果您使用的是故事板,则可以使用此选项

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

self.navigationController?.pushViewController(switchViewController, animated: true)
循环中的for

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

谢谢。

你的问题不是很清楚,你能解释得更清楚一点吗?是的,我肯定有嵌入导航的视图控制器okie?它有一个下拉列表,如果我从另一个vc中选择一个值,它将被另一个vc实现。如果我再次选择更改下拉列表值,它将被另一个vc填充。如果我通过“后退”按钮导航,它将被再次填充。我的所有层次结构都显示我想要控制它只在像1->2->3导航一样的情况下导航3->2->1好吗??如果我按1->2->3返回2再次3返回2再次3如果单击导航返回现在它应该导航我最近的访问它不应该导航我的所有路径如何控制你使用segues导航吗?或者代码?是的,但不适用于导航按钮。vci中的控件分段使用了该选项,但不起作用。请再次检查我的问题。我编辑了它。你会得到我的要求你可以发布一个循环代码的swift代码,如果你不介意的话,谢谢你,这是答案,但是如果我给poprootviewcontroller应用程序崩溃了,我已经编辑了我的swift代码的答案。对于这次崩溃,可能有一个例外。你能使用一个异常调试器,看看异常可能是什么吗?非常感谢,我还需要更多的帮助你如何使用日期选择器我的意思是你使用一个新的视图或通过弹出窗口,这是更好的方式为用户界面