Swift Tableview получить конкретную ячейку не работает - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь очистить определенную ячейку для моего просмотра таблицы. Я знаю, как добиться этого, используя этот код прямо здесь:

let index = IndexPath(row: 1, section: 0)
if let cell = self.tableView.cellForRow(at: index) as? SomeTableViewCell {
     // do sth
  }else {
     print("Row 1 not found")
}

Но проблема в том, что когда я использую этот метод с большим экраном телефона, таким как Iphone7, 8, X ... Он будет работать нормально, но когда я тестировал на iphone5, 6 или меньшем экране, строка 1 не видна , Он напечатает, что "строка 1 не найдена"

1 Ответ

2 голосов
/ 20 апреля 2019

Похоже, вы почти нашли проблему сами!

Как и в случае с табличными представлениями, iOS повторно использует их ячейки, чтобы сохранить память и предложить пользователю плавную прокрутку.

IOS повторно использует ячейки, когда они исчезают с экрана.т.е.: при прокрутке вниз начальные ячейки начинают использоваться повторно.На больших экранах это занимает некоторое время, так как может отображаться сразу 20 ячеек против 10 (сразу) на меньших экранах.

Если вы хотите навсегда удалить эту ячейку, вам следуетудалите соответствующий объект данных из вашей модели, которая создает резервную копию табличного представления (источник данных), и перезагрузите табличное представление.

Если вы не хотите окончательно удалить эту ячейку, вы можете сбросить ее только тогда, когда таблица действительнонужно это нарисовать.Это можно сделать в методе источника данных

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!  {
            var cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell
//Do your Resetting code here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...