Должен ли я очистить табличное представление перед использованием reloadData? - PullRequest
0 голосов
/ 03 апреля 2011

Я хочу поместить новые значения в табличное представление.

My tableView:cellForRowAtIndexPath: имеет следующее

if (cell == nil) { // do something }

Когда я удаляю оператор if сверху и использую reloadData, приложение вылетает.Нужно ли очищать старые значения в таблице перед использованием reloadData?Если так, то как?
Спасибо

Редактировать:

Извините, я не имел в виду, что я положил reloadData внутрь tableView:cellForRowAtIndexPath:.я положил его внутрь другого метода и удалил if (cell == nil) { // do something } изнутри tableView:cellForRowAtIndexPath:

Ответы [ 5 ]

2 голосов
/ 03 апреля 2011

Вы должны прочитать Руководство по программированию TableView , чтобы ознакомиться с концепциями.reloadData - это метод, который в конечном итоге вызывает tableView:cellForRowAtIndexPath:.

2 голосов
/ 03 апреля 2011

Вы генерируете бесконечный цикл, вызывая reloadData внутри

tableView:cellForRowAtIndexPath:
1 голос
/ 05 апреля 2011

Нет необходимости очищать данные в табличном представлении.Возможно, вы захотите убедиться, что вы правильно внедрили -prepareForReuse в подклассы UITableViewCell, чтобы повторно используемые ячейки не отображали старые данные.

Кстати, неясно, почему вы хотите удалить бит if (cell == nil).Если нет ячейки для повторного использования (удаления из очереди), то вам нужно создать новую.Если вы этого не сделаете, вы вернете nil, что вызовет исключение в UITableView.

0 голосов
/ 03 апреля 2011

reloadData вызывает весь источник данных tableView, поэтому вы не можете вызвать его в cellForRowAtIndexPath, это создаст бесконечный цикл.

0 голосов
/ 03 апреля 2011

Вы (99% времени) не можете звонить reloadData с tableView:cellForRowAtIndexPath:. Это потому, что reloadData в конечном итоге вызывает tableView:cellForRowAtIndexPath, поэтому вы получаете бесконечный цикл.

Вам нужно больше объяснить, что вы пытаетесь сделать (и какой-то дополнительный код был бы хорош), чтобы ответить на вопрос дальше.

...