7

我想实现 UISearchController,一步一步使用本教程:

使用 MKLocalSearchRequest 搜索地点并使用 UISearchController 显示结果

而在本节...

使用 MKLocalSearchRequest 搜索位置

...我对第 3 步有疑问。设置表视图数据源

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.dequeueReusableCellWithIdentifier("cell")!
    let selectedItem = matchingItems[indexPath.row].placemark
    cell.textLabel?.text = selectedItem.name
    cell.detailTextLabel?.text = ""
    return cell
  }
}

错误:方法没有覆盖其超类中的任何方法

我正在尝试overridecellForRowAtindexPathtableView 函数中删除,在这种情况下,我在 Xcode 中没有错误,但执行后出现错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: 'UITableView (<UITableView: 0x7ff8e03a3800; frame = (0 0; 375 667); clipsToBounds = YES; autoresize = W+H;
gestureRecognizers = <NSArray: 0x604002046450>; layer = <CALayer: 0x604001626620>; 
contentOffset: {0, -56}; contentSize: {375, 132};adjustedContentInset: {56, 0, 0, 0}>) 
failed to obtain a cell from its dataSource(<CityWeather.LocationSearchTable: 0x7ff8de696e60>)'

错误消息大喊:failed to obtain a cell from its dataSource(<CityWeather.LocationSearchTable: 0x7ff8de696e60>)

请告诉我,我做错了什么?我该如何处理这个问题?谢谢。

4

2 回答 2

13

教程使用UITableviewDatasource方法的旧语法(可能是 Swift 2.2):

你现在需要这些:

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

}

尽可能使用 XCode 的代码完成。

于 2017-11-21T12:19:16.263 回答
3

正如 Puneet Sharma 所说,您不需要覆盖方法。因为您UITableViewDatasourceUITableViewDelegate.UIViewController

您需要tableViewViewController.

于 2017-11-21T12:23:41.660 回答