Swift MapKit Автозаполнение
Я пытаюсь установить автозаполнение адреса в моем контроллере представления, чтобы пользователям не приходилось вводить полный адрес и вместо этого выбирать его из-под текстового поля поиска. Вот так выглядит мой контроллер:
import Foundation
import UIKit
import MapKit
extension AddNewAddressViewController: MKLocalSearchCompleterDelegate {
func completerDidUpdateResults(_ completer: MKLocalSearchCompleter) {
searchResults = completer.results
searchResultsTableView.reloadData()
}
func completer(_ completer: MKLocalSearchCompleter, didFailWithError error: Error) {
// handle error
}
}
class AddNewAddressViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var searchCompleter = MKLocalSearchCompleter()
var searchResults = [MKLocalSearchCompletion]()
override func viewDidLoad() {
searchCompleter.delegate = self
searchCompleter.queryFragment = addressSearch.text!
searchResultsTableView.dataSource = self
super.viewDidLoad()
}
@IBOutlet weak var addressSearch: UITextField!
@IBOutlet weak var searchResultsTableView: UITableView!
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let searchResultsCount = searchResults.count
return searchResultsCount
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let searchResult = searchResults[indexPath.row]
let cell = UITableViewCell(style: .subtitle, reuseIdentifier: nil)
cell.textLabel?.text = searchResult.title
cell.detailTextLabel?.text = searchResult.subtitle
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
}
@IBAction func defaultAddressButton(_ sender: Any) {
}
@IBAction func addAddressButton(_ sender: Any) {
}
}
Я получаю сообщение об ошибке:
Тип AddNewAddressViewController не соответствует протоколу 'UITableViewDataSource'
Что мне не хватает?
Заранее спасибо.
1 ответ
Решение
Вы пропустили подчеркивание для первого параметра объявления cellForRowAtIndexPath, который требуется в swift 3.0:
func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
[etc.]
В результате у вас нет обязательной функции, соответствующей ожидаемой подписи.