草庐IT

Swift 3.0 UITableViewDelege Objective-c 方法与要求的选择器不匹配

coder 2023-09-04 原文

我最近使用 Xcode 8.0 将一个项目转换为 Swift 3,但我在一个我不太了解的函数上遇到了错误。在这些方面:

extension HomeTableViewController : UITableViewDelegate {

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {

    }
}

为了解决这个错误,Xcode 告诉我在方法之前添加 @objc(tableView:commitEditingStyle:forRowAtIndexPath:)

好的,它可以工作,但我不明白为什么只有这种方法才需要它。

Xcode 不需要在我的 tableView:heighForHeaderInSection 前面添加 @objc 东西,但我没有看到此方法和 UITableViewDelegate 之间的任何差异tableView:commitEditingStyle:forRowAtIndexPath:

那么,知道为什么这对于 tableView:commitEditingStyle:forRowAtIndexPath 方法是强制性的吗?

提前致谢! ?

最佳答案

您在扩展程序中采用了不正确的协议(protocol)。 tableView:commitEditingStyle:forRowAtIndexPath: 方法是 UITableViewDataSource 协议(protocol)的一部分。更改您的扩展以采用 UITableViewDataSource 协议(protocol)而不是 UITableViewDelegate 协议(protocol),错误消失。

至少当我在 NSCollectionViewDelegate/DataSource 扩展中遇到这个错误时,这对我有用。

关于Swift 3.0 UITableViewDelege Objective-c 方法与要求的选择器不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39510890/

有关Swift 3.0 UITableViewDelege Objective-c 方法与要求的选择器不匹配的更多相关文章

随机推荐