我正在基于用户是点击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)
}
谢谢!
答案 0 :(得分:1)
当您手动选择表格单元格与以编程方式调用表格单元格时,您希望应用程序做什么?
当前,您以编程方式调用与点击单元格相同的方法,即tableView(_:didSelectRowAt:)
。
因此,如果要进行任何其他计算,只需在调用selectTableViewRowProgrammatically
之前或之后将其添加到self.tableView(self.tableView, didSelectRowAt: indexPath)
方法中即可。
要以编程方式突出显示单元格,可以调用selectRow(at:animated:scrollPosition:)。
请注意文档中的Discussion
部分:
调用此方法不会导致委托收到 tableView(:willSelectRowAt :)或tableView(:didSelectRowAt :)消息, 也不会将selectionDidChangeNotification通知发送给 观察者。