我正在创建一个带有自动填充搜索栏的mapView,我收到Method Does Not Override Any Method From Its Superclass
错误。以下是我发生此错误的代码示例:
extension LocationSearchTable {
override func tableView(_ tableView: UITableView, numberOfRowsInSection
section: Int) -> Int {
return matchingItems.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath
indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")!
let selectedItem = matchingItems[indexPath.row].placemark
cell.textLabel?.text = selectedItem.name
cell.detailTextLabel?.text = ""
return cell
}
}
这是创建错误的函数:
override func tableView(tableView: UITableView, cellForRowAtIndexPath
indexPath: NSIndexPath) -> UITableViewCell {
我做错了什么?谢谢!
答案 0 :(得分:1)
您可能需要澄清一些事情。
我假设:
您的LocationSearchTable
是UITableViewController
的子类。
您使用Xcode 8 / Swift 3或更高版本。
您不会收到错误或警告:
override func tableView(_ tableView: UITableView, numberOfRowsInSection
section: Int) -> Int {
你应该更好地展示你的代码显示错误的位置,它似乎非常非常老。
更好地了解UITableViewDataSource
的方法在最新的Swift中是什么样的,你知道UITableViewController
符合:
...
func tableView(UITableView, cellForRowAt: IndexPath) -> UITableViewCell
...
在最近的Swifts中,导入的方法名称更加 swiftified ,使用旧的代码片段时应该小心。
尝试将方法标题更改为:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
请不要忘记第一个参数的空标签_
,第二个参数标签是cellForRowAt
,而不是cellForRowAtIndexPath
,其类型为IndexPath
,不是NSIndexPath
。
另外,如果您删除override
,则可能会收到错误。
答案 1 :(得分:0)
如果要将tableView添加到视图中,则应将tableview的委托和数据源设置为对象,并根据需要实现数据源和委托的方法。