swift - 以编程方式从主线程以外的其他地方选择 UITableView 行

标签 swift uitableview

我有一个 UITableView Controller ,它在 viewDidLoad 中异步发出网络请求,该请求回调到 UITableView 方法。如果数据包含用户预选的匹配信息,我想前进到下一个 View Controller 。这是我在回调中用于前进到下一个 View Controller 的代码:

 //search for row if it exists, then:
 let indexPath = IndexPath(row: r, section: 0)
 DispatchQueue.main.async(execute: {
     self.tableView.reloadData()
     self.tableView.selectRow(at: indexPath, animated: false,     
                             scrollPosition: UITableViewScrollPosition.none)
     self.tableView(self.tableView, didSelectRowAt: indexPath)
 })

当我调用 self.tableView(didSelectRowAt: indexPath) 时,我遇到了运行时故障,并且堆栈跟踪不是很有帮助。在以编程方式选择 UITableView 的一行之前,我需要设置什么吗?

TIA

最佳答案

如果你想以编程方式触发对 tableView 中一行的选择,你必须这样调用它:

self.tableView.delegate?.tableView!(self.tableView, didSelectRowAt: indexPath)

您的 tableView 没有方法 didSelectRowAt,委托(delegate)有,并且在上面调用它。

另外不要忘记首先将 tableView 的委托(delegate)设置为当前 View Controller ,如果这是您想要的委托(delegate)。

self.tableView.delegate = self

关于swift - 以编程方式从主线程以外的其他地方选择 UITableView 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48246494/

相关文章:

ios - 如何让我的 iOS7 UITableViewController 不出现在顶部状态栏下?

ios - 如何访问 UITableView 以重新加载数据?

ios - 禁用时分隔符出现在 uitableview 中

swift - 具有覆盖功能的嵌套类的编译器错误 - Swift Xcode6

swift - 为什么每次我将 IBactioning 添加到类中时我的应用程序都会崩溃

ios - prepareForSegue 首先返回 nil

swift - 我想在 swift 中使用 outputStream.write() 通过输出流发送 Int

swift - print() 使用颜色来控制日志

ios - 当 UITableViewCell 满足所有约束时约束中断

objective-c - 在 UITableView 的头部添加一个 UISegmentedControl