区分UITableView和以编程方式进行选择之间有区别吗?

时间:2019-02-12 22:35:03

标签: swift uitableview

我正在基于用户是点击UITableView单元格还是通过编程选择它来调用不同的方法。但是,我似乎无法将它们分开。以编程方式运行的所有内容都在didSelectRowAt indexPath中。有没有一种方法可以更独立地使用它们?

这是我的程序代码:

func selectTableViewRowProgrammatically() {

    let indexPath = IndexPath(row: someVar, section: 0);
    self.tableView.selectRow(at: indexPath, animated: false, scrollPosition: UITableView.ScrollPosition.none)
    self.tableView(self.tableView, didSelectRowAt: indexPath)

}

谢谢!

1 个答案:

答案 0 :(得分:1)

当您手动选择表格单元格与以编程方式调用表格单元格时,您希望应用程序做什么?

当前,您以编程方式调用与点击单元格相同的方法,即tableView(_:didSelectRowAt:)

因此,如果要进行任何其他计算,只需在调用selectTableViewRowProgrammatically之前或之后将其添加到self.tableView(self.tableView, didSelectRowAt: indexPath)方法中即可。

要以编程方式突出显示单元格,可以调用selectRow(at:animated:scrollPosition:)

请注意文档中的Discussion部分:

  

调用此方法不会导致委托收到   tableView(:willSelectRowAt :)或tableView(:didSelectRowAt :)消息,   也不会将selectionDidChangeNotification通知发送给   观察者。