Обновлять элементы в контроллере представления после выбора ячейки в UITableView

#swift

#swift

Вопрос:

Я пытаюсь обновить различные метки и текстовые поля в моем контроллере представления на основе того, что пользователь выбирает в TableView

Я использую Swift 4.2 с TableView в обычном контроллере представления, а не TableViewController, и просмотрел все эти форумы и другие, используя различные функции, чтобы проверить, выбрана ли ячейка, а затем сделать что-то на основе каждой выбранной ячейки

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

 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    whichGPULbl.text = "(gpuList[indexPath.row])"
}
  

В качестве примечания: gpuList — это массив, который TableView использует для своего содержимого

Итак, если в TableView выбрана ячейка «GTX 1070», метка «whichGPULbl» должна отображать «GTX 1070», а затем обновляться каждый раз, когда пользователь выбирает новую ячейку

Ответ №1:

Если настройка верна, то вы пропускаете

 tableView.delegate = self
  

Комментарии:

1. Большое вам спасибо. В какой-то момент у меня было это в viewDidLoad (), но, должно быть, я удалил это по ошибке. Еще раз спасибо

2. Я попробовал это, однако я получал сообщение об ошибке, в котором говорилось, что я не могу назначить ViewController «UITableViewDelegate», поэтому я добавил «UITableViewDelegate» в заголовок класса, и когда ошибка исчезла, я получил ошибку SIGABRT в разделе «@UIApplicationMain». Я довольно новичок в swift, поэтому я не знаю, что я здесь делаю не так

3. После еще нескольких попыток я понял, что мне также не хватает «TableView.DataSource = self» и заголовка класса, который к нему прилагается, поэтому после применения автоматического исправления, чтобы сделать одну из функций TableView «внутренней», все заработало