Swift - переопределить функцию просмотра таблицы - метод не переопределяет ни один метод из своего суперкласса
Я хочу реализовать 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
}
}
Я пытаюсь удалить override
от cellForRowAtindexPath
Функция table View, в этом случае у меня нет ошибки в 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>)
Скажите пожалуйста, что я делаю не так? И как я могу справиться с этим вопросом?? Благодарю.
2 ответа
В этом руководстве используется старый синтаксис для методов UITableviewDatasource (возможно, Swift 2.2):
Вам нужно это сейчас:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
}
Всегда используйте завершение кода XCode везде, где это возможно.
Как сказал Пунит Шарма, вам не нужно переопределять методы. Потому что вы используете UITableViewDatasource
(а также UITableViewDelegate
) в UIViewController
,
Вам необходимо установить делегата tableView
в вашем ViewController
,