Что должен вернуть cellForRowAtIndexPath, если таблица пуста? - PullRequest
1 голос
/ 19 июня 2011
 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

Я думаю, что если таблица пуста, а именно, что

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [[BNUtilitiesQuick getBizs] count];
}

всегда возвращать 0

Я бы ожидал, что -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath вообще не следует вызывать

Это важно. Я создаю программу для поиска вещей, и иногда после некоторого поиска результат не возвращается.

Однако все равно вызывается, и я получил исключение. Что мне делать?

Ответы [ 5 ]

4 голосов
/ 19 июня 2011

-tableview:cellForRowAtIndexPath: может быть вызвано до того, как табличное представление обнаружило, что оно имеет нулевые строки и поэтому не должно вызываться.

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

1 голос
/ 19 июня 2011

Часто в cellForRow у вас есть гигантский оператор switch ... Это означает, что вам нужно иметь значение, которое нужно вернуть в случае по умолчанию.Я обычно возвращаю ноль там.

Это требуется компилятором, чтобы не показывать предупреждение, но его никогда не следует вызывать.Этот метод вызывается только для индексов строк, которые возможны из-за повторного ввода в методах numberOfSections и numberOdRowsInSection.

1 голос
/ 19 июня 2011

Просто нет способа вызвать tableView:cellForRowAtIndexPath:, когда метод tableView:numberOfRowsInSection: вернет 0. Вероятно, счет возвращается неверно.

1 голос
/ 19 июня 2011

Сначала выведите [[BNUtilitiesQuick getBizs] count]; в NSLog и посмотрите, действительно ли он вернет 0.

Если он показывает 0, и если cellForRowAtIndexPath: все еще вызывается, я подозреваю, что там висит какой-то призрак. : -)

0 голосов
/ 19 июня 2011

Как насчет возврата 1 в качестве счетчика (или 10, например), и что в одной ячейке будет отображаться затемненный текст с «Нет результатов»?

(откройте приложение контактов и найдите что-нибудь .. в нем будет около 10 строк, 9 пустых и 1 отображает «нет результатов»)

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