说我有一个tableViewController和以下内容:
tableView(TableView: UITableView, didSelectRowAtIndexPath: NSIndexPath)
doSomeGenericStuff()是一个类外的方法,因为有一堆完全不同的tableViewControllers都需要使用这个方法。
我真正想从这个方法做的是调用:
func doSomeGenericStuff(indexPath: NSIndexPath, targetTableView: UITableView [, theDelegate: UITableViewDelegate]) {
...
//call didSelectRowAtIndexPath here
...
}
我已将其设置如下,并且我也尝试将代理直接传递给它。
theDelegate.tableView!(targetTableView, didDeselectRowAtIndexPath: indexPath)
使用括号中的代码,我可以获得自动完成功能,但以下代码崩溃了。
2016-06-12 12:49:12.390 AppName[14221:3670062] -[AppName.tableVC tableView:didDeselectRowAtIndexPath:]: unrecognized selector sent to instance 0x14c6ea370
2016-06-12 12:49:12.392 AppName[14221:3670062] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AppName.tableVC tableView:didDeselectRowAtIndexPath:]: unrecognized selector sent to instance 0x14c6ea370'
有没有办法让这种方式以任何方式运作?
更新:错误
{{1}}
答案 0 :(得分:1)
我需要传递tableViewController,而不是tableView。
我想我会把它留在这里作为范围的提醒,并提醒自己要注意它,以及关于公众羞辱的事情。
targetTableViewController.tableView.delegate?.tableView!(targetTableViewController.tableView, didSelectRowAtIndexPath: indexPath)