【问题标题】:How to segue from a cell in xib to a VC in Storyboard如何从 xib 中的单元格转到 Storyboard 中的 VC
【发布时间】:2018-12-12 03:41:24
【问题描述】:

我正在创建一个具有三个表视图(每个在不同的 VC 中)的应用程序。我将所有内容添加到 main.storyboard,但我必须在具有三个标签的 XIB 文件中自定义一个单元格。所以我的问题是如何将 XIB 文件中的单元格中的 segue 添加到情节提要中的 ViewController 中。

我看到这是一个答案,但我不明白: 从 Storyboard 转到 XIB

【问题讨论】:

  • 如何从单元格到视图控制器是什么意思?您是否想要一个解决方案,点击一个单元格将带您到下一个视图控制器并传递该特定表格视图单元格的数据?
  • 只有UIViewController 对象可以进行转场。您的单元格需要告诉其父级(UITableView),其父级需要告诉UIViewController 执行转场。您可以使用块、委托等来执行此操作。
  • 你为什么使用 xib 作为单元格?为什么不在故事板场景中使用原型单元?
  • @Sanket Ray 是的,完全正确。我有一次完整的解决方案,但后来我看到,我必须添加三个标签,所以我不得不在一个 XIB 文件中对此进行此操作,我无法轻松地 ctrl+click+drag 到下一个 tableView。
  • @Paulw11 我可以添加多个标签吗?我尝试过一次,但不知何故之后就没有任何效果了。

标签: ios swift xcode segue xib


【解决方案1】:

如果您知道 customCell 的位置,那么您可以通过以下方式调用 tableView 委托以编程方式轻松实现此目的: 假设您的自定义单元格位于最后一个索引中:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    guard indexPath.row == models.count - 1 else {
        //behavior of other cell
        return
    }
    navigateToTestViewController()
}

但是如果您在 customCell 中有一个按钮,那么您必须使用委托或反应式方法将委托发送到 parentController 以执行导航。

更新: 如果您只需要使 customCell 类型的单元格可导航,那么您可以执行以下方式:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath)
    guard cell is CustomCellTableViewCell else { return }
    navigateToTestViewController()
}

【讨论】:

  • 位置总是在另一个地方,因为用户可以自己输入单元格
  • 那么你怎么知道什么时候为 customCell 出列呢?
  • 我不知道 :D 我知道编码,所以我犯了很多错误
  • 那么“用户可以自己输入单元格”是什么意思?单元格是在运行时动态添加的吗?您能解释一下您的用例或分享您的代码摘录吗?
  • 我的应用程序应该管理俱乐部的簿记。第一个 Tableview:俱乐部然后转到俱乐部的成员,然后从那里转到会员的交易。对于新单元,我的意思是例如一个为该成员创建一个新单元的新成员
【解决方案2】:

这个问题之前回答得很好:

https://stackoverflow.com/a/44675813/4686915

这是它的核心:

let myViewController = MyViewController(nibName: "MyViewController", bundle: nil)
self.present(myViewController, animated: true, completion: nil)

或推入导航控制器

self.navigationController?.pushViewController(MyViewController(nibName: "MyViewController", bundle: nil), animated: true)

唯一真正的区别是您必须确保在您的UIViewController 中进行self... 调用。

【讨论】:

    猜你喜欢
    • 2017-10-20
    • 2011-12-09
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    相关资源
    最近更新 更多