【问题标题】:How unwindForSegue:towardsViewController: works?unwindForSegue:towardsViewController: 是如何工作的?
【发布时间】:2015-10-08 13:36:18
【问题描述】:

在我的简单应用中,我创建了一些控制器,它们之间有基本的 segues:

黄色控制器 -> 蓝色控制器 -> 绿色控制器 -> 橙色控制器。他们每个人都有自己的自定义类。

OrangeController 我创建了 unwindSegue 到我的 YellowController。没关系。

在我放的每一节课中:

override func unwindForSegue(unwindSegue: UIStoryboardSegue, towardsViewController subsequentVC: UIViewController) {
    print(unwindSegue)
    print(subsequentVC)
}

但它根本没有被调用。为什么?我应该准备什么演示来测试这个功能?

同理:

func allowedChildViewControllersForUnwindingFromSource(source: UIStoryboardUnwindSegueSource) -> [UIViewController]
func childViewControllerContainingSegueSource(source: UIStoryboardUnwindSegueSource) -> UIViewController?

【问题讨论】:

  • "我已经创建了一些控制器,它们之间有基本的 segues" 是的,但是它们是 什么 类型的控制器,它们是什么类型的 segues? unwindForSegue 仅在 父视图控制器 上调用。例如,如果您只制作了模态(演示)segues,则根本不会调用它,因为展开完全由简单的解雇组成。

标签: ios swift ios9 uistoryboard uistoryboardsegue


【解决方案1】:

IBActionreturnType实现方法

-(IBAction) unwindForSegue:(nonnull UIStoryboardSegue *)unwindSegue towardsViewController:(nonnull UIViewController *)subsequentVC

Storyboard 中,将控件(负责返回操作)链接到视图控制器中的退出操作。

【讨论】:

  • 普通的'unwindForSegue'有什么区别?
  • 从意义的角度来看,IBActionvoid 相同。最大的区别在于接口构建器可以查看 IBAction 方法。我不知道编译器是否为每个 IBAction 方法留下 breadcrumbs 或 Interface builder 仅重新解析源代码以查找 IBAction 方法,但是可以肯定 Interface builder 需要 IBAction 方法来展开 segues。对于其他更简单的东西,如按钮操作,不再需要 nshipster.com/ibaction-iboutlet-iboutletcollection
猜你喜欢
  • 2017-07-24
  • 2016-11-13
  • 2017-10-11
  • 2021-10-13
  • 2011-02-24
  • 2013-11-16
  • 2011-10-16
  • 2012-11-03
  • 2011-12-03
相关资源
最近更新 更多