если у меня есть UITableView, который фильтрует результаты поиска, как мне установить IndexPath на ViewDidLoad () постоянным даже при поиске - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь настроить UITableView для поиска.Прямо сейчас, когда представление загружается, есть 23 ячейки, поэтому indexPath изменяется от 0 до 22, и если вы щелкаете по третьей ячейке, она возвращает indexPath из 2. Но когда я что-то ищу и нажимаю на третий результат,он по-прежнему возвращает indexPath из 2. Однако я хочу, чтобы indexPath поиска был таким, каким он был изначально загружен.

1 Ответ

1 голос
/ 05 мая 2019

Я думаю, что вы можете выбрать немного другой подход.

В вашей реализации func tableView(UITableView, cellForRowAt: IndexPath) -> UITableViewCell вы должны переводить indexPath в один из 23 элементов данных. Это будет верно независимо от того, выполняете ли вы фильтрацию по критериям поиска.

Итак, в вашей реализации func tableView(UITableView, didSelectRowAt: IndexPath) я бы посоветовал вам сделать точно такой же перевод indexPath в этой функции, чтобы получить правильный элемент данных.

Поскольку вы реализуете ту же логику, чтобы использовать IndexPath для получения элемента данных, эта логика, вероятно, должна находиться в одной функции, которую могут совместно использовать обе функции табличного представления.

Пример добавления кода

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        let cake = filteredCakes[indexPath.row]
        // bake your cell with your cake here
        // cell.textLabel.text = cake.description // or whatever

        return cell
    }

Затем при обработке касания пользователя:

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let cake = filteredCakes[indexPath.row]
        // do whatever actions you want now that the user has tapped
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...