Неоднозначная ссылка на член 'tableView (_: didSelectRowAt :)' (Swift) - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь выполнить поиск в массиве, отображаемом в виде таблицы, и следую этому руководству, однако, когда я пытаюсь вызвать метод reloadData (), я получаю Неоднозначную ссылку на член 'tableView (_: didSelectRowAt:) '

Есть идеи, что мне не хватает?

Заранее спасибо за любые советы.Вот мой код ListController.swift:

import UIKit

var arrayIndex = 0

class ListController: UIViewController, UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate {


    let data = ["New York, NY", "Los Angeles, CA", "Chicago, IL", "Houston, TX",
                "Philadelphia, PA", "Phoenix, AZ", "San Diego, CA", "San Antonio, TX",
                "Dallas, TX", "Detroit, MI", "San Jose, CA", "Indianapolis, IN",
                "Jacksonville, FL", "San Francisco, CA", "Columbus, OH", "Austin, TX",
                "Memphis, TN", "Baltimore, MD", "Charlotte, ND", "Fort Worth, TX"]

    var filteredData: [String]!

    @IBOutlet var searchBarOutlet: UISearchBar!

    //Table Delegate
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        arrayIndex = indexPath.row
        performSegue(withIdentifier: "segue", sender: self)
    }

    // Table Data Source
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return filteredData.count
    }

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

        // Cell Data Source

        let cell = tableView.dequeueReusableCell(withIdentifier: "TableCell", for: indexPath) as UITableViewCell
        cell.textLabel?.text = filteredData[indexPath.row]


        // Cell Visual Formatting
        cell.backgroundColor = UIColor(red:0.05, green:0.05, blue:0.07, alpha:0)
        cell.textLabel?.textColor = UIColor.white
        cell.textLabel?.font = UIFont(name: "Raleway", size: 18)
        cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator

        return cell
    }

    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

        filteredData = searchText.isEmpty ? data : data.filter { (item: String) -> Bool in
        return item.range(of: searchText, options: .caseInsensitive, range: nil, locale: nil) != nil
        }

        let tableView = UITableView()

        self.tableView.reloadData()
    }


    override func viewDidLoad() {
        super.viewDidLoad()
        self.title = "\(titles.count) Definitions"

        filteredData = data

}

}

1 Ответ

0 голосов
/ 06 июня 2018

Вам не хватает @IBOutlet для вашего tableView.Поэтому, когда вы ссылаетесь на self.tableView Свифт думает, что вы говорите об одном из методов, который начинается с tableView.

Итак, избавьтесь от этой строки в searchBar(_:textDidChange:):

let tableView = UITableView()

и добавьте розетку к вашему tableView и подключите его:

@IBOutlet weak var tableView: UITableView!
...