Swift 3.0 UITableViewDelege Objective-c方法与需求选择器不匹配
我最近使用Xcode 8.0将项目转换为Swift 3,并且我在函数上遇到了一个错误,我不太明白。在这些线路上:Swift 3.0 UITableViewDelege Objective-c方法与需求选择器不匹配
extension HomeTableViewController : UITableViewDelegate {
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
}
}
要解决此错误时,Xcode告诉我,就在方法前加@objc(tableView:commitEditingStyle:forRowAtIndexPath:)
。
好了,它的工作原理,但我不知道为什么它只是需要这种方法。
Xcode不需要在我的tableView:heighForHeaderInSection
前添加@objc的东西,但我没有看到在此方法和tableView:commitEditingStyle:forRowAtIndexPath:
之间UITableViewDelegate
的任何差异。
那么,知道为什么这是tableView:commitEditingStyle:forRowAtIndexPath
方法的强制性?
在此先感谢!
您在扩展中采用了错误的协议。 tableView:commitEditingStyle:forRowAtIndexPath:
方法是UITableViewDataSource
协议的一部分。更改您的分机采用UITableViewDataSource
协议而不是UITableViewDelegate
协议,错误消失。
至少这对我来说当我得到这个错误NSCollectionViewDelegate/DataSource
扩展。
哦,非常感谢,我没有注意到! PEBCAK:/很奇怪,它没有用Swift 2.2发出警告 – Toldy
我有同样的问题@objc(tableView:heightForRowAtIndexPath :)方法。不知道为什么 – Maiaux