как вручную вызвать cellforrowat таблицы вручную в swift? - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь позвонить ( cellForRowAt indexPath: IndexPath ) метод вручную с кнопки, как я могу сделать, чтобы для записи я уже пытался перезагрузить метод данных на UITableView. Это не сработало.

self.myTableView.reloadData()

Почему мне нужно это сделать, потому что я пытаюсь реализовать решение из stackoverflow, решение выглядит так:

func configureVisibleCells(for tableView: UITableView?, animated: Bool) {
    self.tableView(tableView, configureRowsAtIndexPaths: tableView?.indexPathsForVisibleRows, animated: animated)
}

func tableView(_ tableView: UITableView?, configureRowsAtIndexPaths indexPaths: [Any]?, animated: Bool) {
    for indexPath in indexPaths as? [IndexPath] ?? [] {
        let cell: UITableViewCell? = tableView?.cellForRow(at: indexPath)
        if cell != nil {
            self.tableView(tableView, configureCell: cell, forRowAt: indexPath, animated: animated)
        }
    }
}

func tableView(_ tableView: UITableView?, configureCell cell: UITableViewCell?, forRowAt indexPath: IndexPath?, animated: Bool) {
    // Cell configuration
}

"Настройка ячейки в

tableView(_ tableView: UITableView?, configureCell cell: UITableViewCell?, forRowAt indexPath: IndexPath?, animated: Bool) method and call this method in your tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell .

и когда вам нужно перезагрузить видимые ячейки, вызовите метод

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

Теперь мне нужно назвать это, как сказал парень, который опубликовал решение.

1 Ответ

0 голосов
/ 13 мая 2019

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

Например : количество рядов, секций, высота и т. Д.

Вы можете использовать reloadRows(at:with:) функцию UITableView для перезагрузки строк видимых ячеек.

Посмотрите на это: документация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...