Добавить строку в сбой UITableView, если изначально пустая таблица - PullRequest
1 голос
/ 11 мая 2011

Я использую код ниже, чтобы обновить табличное представление, в которое я только что добавил строку. Код работает для добавления строки в таблицу, если в таблице уже есть хотя бы 1 строка. Однако происходит сбой, если изначально это была пустая таблица.

NSArray *indexPaths = [NSArray arrayWithObjects: [NSIndexPath indexPathForRow:[commentsArray count] inSection:0], nil];

[commentsTableView beginUpdates];

[commentsArray addObject:newestEntry];
[commentsTableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationBottom];

[commentsTableView endUpdates];

[commentsTableView scrollToBottom:YES];

Ответ на сбой, который я получаю:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0.  The number of rows contained in an existing section after the update (0) must be equal to the number of rows contained in that section before the update (0), plus or minus the number of rows inserted or deleted from that section (1 inserted, 0 deleted).'

Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

1 голос
/ 12 мая 2011

Ну, ошибка говорит вам, что когда UIKit вызывает tableView:numberOfRowsInSection, возвращается 0 как до, так и после ваших обновлений.Так что либо у вас есть ошибка в этом методе или в вашем обновлении.Вы сказали в комментарии к предыдущему ответу, что ваш tableView:numberOfRowsInSection правильный, тогда это должно быть обновление.Если commentsArray равно нулю в первом обновлении по какой-то причине, это может объяснить ситуацию.Возможно, попробуйте следующее:

NSAssert(commentsArray, @"commentsArray is nil");
[commentsArray addObject:newestEntry];

Утверждение будет игнорироваться в сборке выпуска, поэтому используйте сборку отладки.

0 голосов
/ 11 мая 2011

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

// Настройка количества строк в табличном представлении.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return [commentsArray count];
}

Если это не помогло решить вашу проблему, пожалуйста, добавьте сюда немного кода.

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