首页 > 解决方案 > 按下行时未调用表视图委托方法 (didSelectRowAt)

问题描述

当用户按下表格视图上的某个单元格/行时,我正在尝试执行 segue。我已经实现了委托协议

extension myVC : UITableViewDelegate

这是我的 didSelectRow 函数

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
   performSegue(withIdentifier: "searchToOtherUser", sender: self)
}

在前一个函数中还做了一些额外的事情,但是当我在函数中放置一个断点时,我可以看到应用程序永远不会进入这个函数。

我已经看到了前面提到的关于这个主题的一些答案(没有使用用户手势,并且启用了用户与表格视图的交互)。

有谁知道我该如何解决这个问题?

非常感谢安东尼

标签: iosswiftdelegates

解决方案


如果正在加载内容并且启用了选择,则要检查的内容是:

  • 1)在swift中以编程方式设置委托
  • 2)(可选)将 tableview 设置delegateFile's Owner以防您将 tableview 添加到您的UIViewControllerinStoryboard而不是创建一个UITableViewController(它会自动为您执行此操作)。

检查 1 - 以编程方式设置委托

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.delegate = self
    ...
}

检查 2(仅适用于在 Storyboard 中添加到 UIViewController 的 TableView)

在情节提要中,Interface Builder您还应该将 tableview 链接delegateFile's Owner

**检查 2 - 步骤 A) **

可能不是File's Owner在左侧栏中明确说明,而是您可能必须这样做:

检查 2 - 替代步骤 A)

然后delegate像这样选择:

检查 2 - 步骤 B)


推荐阅读