由于我已升级到Xcode 9 / Swift 4,我的某些UITableViewDelegate
方法不再被调用
答案 0 :(得分:0)
从Xcode 9 / Swift 4开始,所有Objective-C方法都应标记为@objc
。编译器可以合理地识别它应该应用于何处,但是它并没有弄清楚继承。例如:
class Delegate: NSObject, UITableViewDelegate {
}
class SuperDelegate: Delegate {
override func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { return indexPath }
}
这不会产生任何警告,崩溃或构建错误。但是,在添加@objc
:
@objc class SuperDelegate: Delegate {
override func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { return indexPath }
}