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.]

В результате у вас нет обязательной функции, соответствующей ожидаемой подписи.

Другие вопросы по тегам