如何在其他导航控制器中弹出视图?

邓肯·琼斯(Duncan Jones)

我想在我的Swift应用程序中创建以下用户流:

  1. 用户点击一个按钮
  2. 弹出的模式视图带有选择项。用户选择一个选项。
  3. 出现另一种选择的第二个视图(使用“显示”过渡,因此用户可以按<返回更改选择#1)。用户选择第二个选择。
  4. 第二个模式视图切换回原始视图(具有按钮)。

为此,我创建了以下结构:

--> NC1 --> VC1 --modal-> NC2 --> VC2 --show-> VC3    (NC = UINavigationController,
             ^                                  |      VC = UIViewController)
             |                                  |
             ----Segue I'm trying to achieve-----

我一直试图通过将对VC1的引用一直传递到VC3,然后再在VC3中调用以下代码,将其一直弹出回到VC1:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    // Perform Segue
    print("Trying to segue")
    rootController!.navigationController!.popToRootViewControllerAnimated(true)

    tableView.deselectRowAtIndexPath(indexPath, animated: true)
} 

哪里rootController是对VC1的引用。不幸的是,这种情况没有发生。第二个模式视图仍保留在屏幕上,但是我得到了“尝试缝制”消息。

我是否尝试以正确的方式实施此用户流程?如果是这样,为什么我不能在另一个导航控制器中弹出根视图?

维克多·西姆科(ViktorSimkó)

如果您正在使用情节提要,则可以使用展开顺序来执行此操作。

在VC1中实现一个@IBAction方法,该方法采用aUIStoryboardSegue作为参数:

@IBAction func unwindToVC1(sender: UIStoryboardSegue) {

}

然后从VC3的Prototype单元中拖动至视图控制器的Exit图标,选择Selection Segue: unwindToVC1:,您就可以开始了。

在此处输入图片说明

您也可以使用代码获得类似的结果。像这样在VC3中
实现didSelectRowAtIndexPath

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    navigationController!.dismissViewControllerAnimated(true, completion: nil)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在其他控制器的视图中显示计数

来自分类Dev

如何在其他视图控制器中快速使用相同的API?

来自分类Dev

如何在其他视图控制器的uitableview中显示sqlite数据?

来自分类Dev

我们如何在其他控制器视图中使用一个控制器方法?

来自分类Dev

如何从目标c中的其他子视图控制器导航子视图控制器

来自分类Dev

导航控制器未推送其他视图

来自分类Dev

如何使用导航栏项转到其他视图控制器?

来自分类Dev

如何在控制器中将变量发送到CakePHP 3.x中的元素并在其他视图中使用元素时保留变量?

来自分类Dev

如何弹出导航控制器?

来自分类Dev

如何在没有其他视图控制器上显示导航栏的情况下使用UITableViewController进行筛选?

来自分类Dev

如何在导航栏中添加 3 个按钮并将这些按钮转发到其他屏幕或视图控制器?

来自分类Dev

如何在laravel视图中共享来自其他控制器的数据?

来自分类Dev

如何在目标c中的其他视图控制器中隐藏按钮

来自分类Dev

如何调用我的自定义警报控制器功能以在其他视图控制器中显示?

来自分类Dev

如何在根视图中隐藏导航控制器?

来自分类Dev

如何在视图控制器上获取导航栏?

来自分类Dev

如何使用包含多个导航控制器的视图层次结构弹出到根视图控制器

来自分类Dev

保存样式化元素以在其他视图控制器中重用

来自分类Dev

在其他视图控制器中执行动作

来自分类Dev

在其他控制器和视图中创建用户(Rails 4 with Devise)

来自分类Dev

如何与其他控制器共享控制器操作/视图

来自分类Dev

表视图导航到视图控制器和其他单元格中的其他操作

来自分类Dev

是否从导航堆栈弹出视图控制器取消分配?

来自分类Dev

Swift 4 弹出到视图控制器:导航方法

来自分类Dev

检测目标视图控制器中的导航弹出

来自分类Dev

在Swift的Nav Controller中弹出2个视图控制器

来自分类Dev

按下导航控制器后退按钮时如何导航到其他View Controller?

来自分类Dev

访问在其他控制器中定义的变量

来自分类Dev

在其他控制器中调用范围函数

Related 相关文章

  1. 1

    如何在其他控制器的视图中显示计数

  2. 2

    如何在其他视图控制器中快速使用相同的API?

  3. 3

    如何在其他视图控制器的uitableview中显示sqlite数据?

  4. 4

    我们如何在其他控制器视图中使用一个控制器方法?

  5. 5

    如何从目标c中的其他子视图控制器导航子视图控制器

  6. 6

    导航控制器未推送其他视图

  7. 7

    如何使用导航栏项转到其他视图控制器?

  8. 8

    如何在控制器中将变量发送到CakePHP 3.x中的元素并在其他视图中使用元素时保留变量?

  9. 9

    如何弹出导航控制器?

  10. 10

    如何在没有其他视图控制器上显示导航栏的情况下使用UITableViewController进行筛选?

  11. 11

    如何在导航栏中添加 3 个按钮并将这些按钮转发到其他屏幕或视图控制器?

  12. 12

    如何在laravel视图中共享来自其他控制器的数据?

  13. 13

    如何在目标c中的其他视图控制器中隐藏按钮

  14. 14

    如何调用我的自定义警报控制器功能以在其他视图控制器中显示?

  15. 15

    如何在根视图中隐藏导航控制器?

  16. 16

    如何在视图控制器上获取导航栏?

  17. 17

    如何使用包含多个导航控制器的视图层次结构弹出到根视图控制器

  18. 18

    保存样式化元素以在其他视图控制器中重用

  19. 19

    在其他视图控制器中执行动作

  20. 20

    在其他控制器和视图中创建用户(Rails 4 with Devise)

  21. 21

    如何与其他控制器共享控制器操作/视图

  22. 22

    表视图导航到视图控制器和其他单元格中的其他操作

  23. 23

    是否从导航堆栈弹出视图控制器取消分配?

  24. 24

    Swift 4 弹出到视图控制器:导航方法

  25. 25

    检测目标视图控制器中的导航弹出

  26. 26

    在Swift的Nav Controller中弹出2个视图控制器

  27. 27

    按下导航控制器后退按钮时如何导航到其他View Controller?

  28. 28

    访问在其他控制器中定义的变量

  29. 29

    在其他控制器中调用范围函数

热门标签

归档