Ячейка TableView не загружает View Controller, пока не будет нажата другая ячейка TableView - PullRequest
0 голосов
/ 09 июня 2018

Я искал вокруг и действительно не нашел, почему это происходит.По сути, я следовал этому уроку https://www.youtube.com/watch?v=yupIw9FXUso Джареда Дэвисона по созданию ячеек табличного представления для контроллеров с несколькими представлениями.В его примере все работает отлично, но по какой-то причине, когда вы нажимаете на ячейку табличного представления в моем коде, эта ячейка выделяется серым цветом.Затем, когда пользователь нажимает на отдельную ячейку табличного представления, загружается контроллер представления, который должен был быть загружен первой ячейкой табличного представления.Если пользователь затем щелкает обратно в исходной ячейке табличного представления, загружается страница, которая должна была быть загружена второй ячейкой табличного представления.Таким образом, все контроллеры представления загружаются «щелчком» позади.

Вот код для представления таблицы:

//Feed Navigation Functions
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return elements.count
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 75
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "feedCell") as! FeedTableViewCell
    cell.txtTitle.text = "The Fight Against \(elements[indexPath.row])"
    cell.issueIcon.image = UIImage(named: "Issue Icons_\(elements[indexPath.row])")
    return cell
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    let vcName = identities[indexPath.row]
    let viewController = storyboard?.instantiateViewController(withIdentifier: vcName)
    self.navigationController?.pushViewController(viewController!, animated: true)
}

Обновление: массив представляет собой простой массив строкнапример [One, Two, Three] в массиве есть 6 строк.

Ответы [ 3 ]

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

Вы хотите использовать метод делегата tableView didSelectRow вместо didDeselectRow Я думаю ...

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

Когда вы выбираете ячейку, затем выбираете другую, вызывается метод didDeselectRow, поэтому Vc выдвигается, и вы на самом деле хотите реализовать didSelectRowAt

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let vcName = identities[indexPath.row]
    let viewController = storyboard?.instantiateViewController(withIdentifier: vcName)
    self.navigationController?.pushViewController(viewController!, animated: true)

    // this to deSelect it after push
    tableView.deselectRow(at: indexPath, animated: false)

}

Этот метод срабатывает при выборе ячейки

func tableView (_ tableView: UITableView, didSelectRowAt indexPath: IndexPath

Этот метод вызывается, когда ячейка не выбрана

func tableView (_tableView: UITableView, didDeselectRowAt indexPath: IndexPath

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

Проблема: click on a table view cell in my code the cell is highlighted in grey Это связано с selectionStyle, о котором вы можете прочитать здесь .Если вы не хотите, чтобы ячейка была выделена, вы можете установить cell.selectionStyle = .none.

Редактировать: как указано в другом правильном ответе - проблема была связана с неверным / опечаткой в ​​методе - мы должны использовать didSelectRowAt, а не didDeselectRowAt.

...