从另一个类/方法调用委托方法(特别是didSelectRowAtIndexPath)

时间:2016-06-12 17:19:03

标签: ios swift uitableview delegates

说我有一个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}}

1 个答案:

答案 0 :(得分:1)

我需要传递tableViewController,而不是tableView。

我想我会把它留在这里作为范围的提醒,并提醒自己要注意它,以及关于公众羞辱的事情。

            targetTableViewController.tableView.delegate?.tableView!(targetTableViewController.tableView, didSelectRowAtIndexPath: indexPath)