Требование:UITableViewCells невидимый
У меня есть список UITableviewCell
загруженную из nib
, что я представляю на UITableview
. При первом открытии UIViewController
все ячейки отображаются правильно и работают должным образом.
Выпуск:
Если я вернуться обратно к родителю, а затем откройте UIViewController
снова UITableviewCell
являются «невидимыми». Я говорю невидимым, потому что с точкой останова в cellForRowAt
я вижу, что представление таблицы загружает все ячейки и ячейки действительны.
Код:
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 13
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 40
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = (project?.sliderData.sliders[indexPath.row].view)! as UITableViewCell
print(cell.contentView.subviews.count)
if let left = cell.viewWithTag(2) as? UILabel {
left.text = "left"
}
if let middle = cell.viewWithTag(3) as? UILabel {
middle.text = "middle"
}
if let right = cell.viewWithTag(4) as? UILabel {
right.text = "right"
}
return cell
}
Screen Shot Image
Ожидаемое наблюдение:
Я думал, что, может быть, subviews
из cells
освобождаются, потому что у меня нет привязок к ним в IB
. Чтобы проверить это, я печатает количество подзаголовков и написание некоторого текста на subview
labels
. И все, кажется, идет хорошо, ячейки загружены и метки есть, но клетки просто не появляются.
Но тогда, если я прокручу TableView
вверх и вниз, чтобы обновить некоторые ячейки, эти ячейки появляются сверху и снизу, как показано на рис.
На скриншоте видно, что только верхние и нижние ячейки загружаются, если вы прокручиваете таблицуView, но ячейки, которые находятся в середине таблицы, не видны. Правильно ли это? Пробовали ли вы вызов tableView setNeedsDisplay(), чтобы снова рисовать таблицу. –
Если я просматриваю таблицу, то отображаются ячейки, которые входят в видимую область, то есть те, которые перезагружены, поэтому, отскакивая сверху, я могу получить пару видимых элементов. Я попытался добавить setNeedsDisplay() в viewDidAppear, но это не имеет никакого эффекта. – jotos
Почему вы не регистрируете наконечник и не деируете ячейки обычным способом? – pbasdf