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

Posted

技术标签:

【中文标题】我如何处理导航返回按钮视图层次结构?【英文标题】:How do i handle navigation Back button view hierarchy? 【发布时间】:2015-06-18 06:32:56 【问题描述】:

问题来了

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

2) Addfilevc 有 dropdownTextfield 它将推送到另一个 vc 有 tableview 选择的行将显示在文本字段中。

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

导航栏后退按钮将导航到我想要处理的所有视图层次结构。如果我转到相同的视图,它应该只导航一次到最近的访问如何执行此操作。

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

从 1->2->3 导航

导航backbtn 3->2->1

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

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

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

【问题讨论】:

你的问题不是很清楚,能解释清楚一点吗? 是的,我确定我有嵌入导航的视图控制器好吗?它有一个下拉菜单,如果我从该 vc 中选择一个值,则该下拉菜单由另一个 vc 实现控制它应该只导航一次 这就像 1->2->3 导航会来 3->2->1 okie??如果我像 1->2->3 再次返回 2 3 再次返回 2 3 如果现在单击导航返回它应该导航我最近的访问它不应该导航我的所有路径如何控制它 您是否使用 segues 进行导航?还是代码? 是的,但不适用于导航按钮,因为 vc 中的控件在那里进行了控制 【参考方案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];
    

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

编辑

迅速:

[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);
     

谢谢。

【讨论】:

我用过但没用。请再次检查我的问题,我编辑了它。你会得到我的要求 如果你不介意的话,你可以发布一个用于循环代码的快速代码 非常感谢这是答案,但如果我给 poprootviewcontroller 应用程序崩溃 我已经编辑了我的快速代码答案。对于崩溃,可能会有一个例外。您可以使用异常调试器并查看异常可能是什么吗? 非常感谢,我还需要 1 点帮助,帮助您了解人们如何使用日期选择器

以上是关于我如何处理导航返回按钮视图层次结构?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理为 UWP 按下的后退按钮

iOS禁用按标签栏按钮弹出到根视图

如何处理 Jetpack Compose 中的导航?

从层次结构中删除前一个视图控制器

按下 UINavigationController 后如何将编辑按钮添加到 UINavigationBar

使用jquery mobile时如何处理手机中的表单导航后退按钮