我最近使用Xcode 8.0将一个项目转换为Swift 3,我对一个我不太了解的函数出错了.在这些方面:
extension HomeTableViewController : UITableViewDelegate {
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
}
}
Run Code Online (Sandbox Code Playgroud)
为了解决这个错误,Xcode告诉我@objc(tableView:commitEditingStyle:forRowAtIndexPath:)在方法之前添加.
好的,它有效,但我不明白为什么它只需要这种方法.
Xcode不需要在我面前添加@objc的东西, tableView:heighForHeaderInSection但我没有看到UITableViewDelegate这个方法和之间的 任何差异tableView:commitEditingStyle:forRowAtIndexPath:.
那么,知道为什么这个tableView:commitEditingStyle:forRowAtIndexPath方法是强制性的?
提前致谢!
小智 10
您在扩展程序中采用了错误的协议.该tableView:commitEditingStyle:forRowAtIndexPath:方法是UITableViewDataSource协议的一部分.更改您的扩展名以采用UITableViewDataSource协议而不是UITableViewDelegate协议,错误消失.
当我收到带有NSCollectionViewDelegate/DataSource扩展名的错误时,至少这对我有用.
| 归档时间: |
|
| 查看次数: |
1535 次 |
| 最近记录: |