【问题标题】:iOS - Can I trigger a segue based on tap in container view?iOS - 我可以根据容器视图中的点击触发 segue 吗?
【发布时间】:2015-04-22 11:48:12
【问题描述】:

我有一个名为 ListViewController 的 UITableViewController 设置(实际上它是 Parse.com PFQueryTableViewController,但这是顺便说一句),在 UITableView 的顶部我有一个 Container View UITableViewController 嵌入其中。

嵌入的UITableViewController 中有几个静态单元格。我想做的是,当用户点击 embedded UITableViewController 中的一个单元格时,触发从 ListViewController 到另一个视图(导航推送)的 segue .

我看到了其他关于在视图之间传递信息的问题,但这是专门针对我如何触发 segue 的。

注意:我正在使用 Swift 开发应用程序

【问题讨论】:

  • 连接到父视图控制器的segue?你需要使用segue吗?

标签: ios uitableview swift segue uicontainerview


【解决方案1】:

您应该在嵌入式表格视图控制器和ListViewController 之间建立委托关系,以便在点击嵌入式表格单元格时触发委托回调。然后回调处理程序(ListViewController 的一部分)可以触发 segue。

所以嵌入式表格视图控制器有一个可以设置的delegate属性,ListViewController实现了delegate协议。

【讨论】:

  • 如何设置这样的委托和“回调”可能是代码示例?我以前没有使用过容器视图(对不起,如果这是一个基本问题!)
  • 容器视图无关紧要,这是两个控制器之间的关系。目前我并没有真正做 swift,你想要一个 swift 示例,所以你需要寻找一个通用的 swift 委托教程。
  • 谢谢 Wain :) 也澄清一下,我需要为包含视图创建一个类以将这一切正确链接?
  • 你需要创建一个协议,但你不应该需要一个额外的类,并且视图根本不会改变。 ListViewController 将自己添加为嵌入式控制器的代表(我猜它已经添加到代码中了?)
  • 我正在使用情节提要,因此在我知道的代码中没有添加任何代表
【解决方案2】:

我有a project on Github called "Test"(链接),它展示了如何在容器视图中设置静态表视图并连接表视图控制器与其父视图控制器之间的双向通信。

它是用 Objective-C 编写的,但技术在 Swift 中是相同的。

您设置了表视图控制器用来与其父视图控制器通信的协议。

您使用 embed segues 将父级中的容器视图连接到子表视图控制器。

您在父视图控制器中添加一个 prepareForSegue 方法,该方法将父视图控制器设置为子视图的委托(您不能使用属性名称“delegate”,因为它已被使用;使用类似“parentVCDelegate”之类的名称)

然后当用户点击表格视图中的一个单元格时,它的视图控制器会向父级发送消息。

【讨论】:

    【解决方案3】:

    将 segue 连接到容器中的表。不用担心它会自动找到父导航控制器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      • 2018-08-12
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多