Когда я быстро просматриваю свой табличный вид, некоторые из его ячеек начинают не отображаться. Как видно из рисунка ниже, в моем представлении таблицы не отображаются некоторые из его ячеек.UITableView не отображает ячейку при быстром прокрутке
Я проверил cellforrowatindexpath и это, кажется, как правило, называется для всех UITableViewCells. Есть ли у вас какие-либо идеи о том, с чего начать отладку?
Здесь моя конфигурация Раскадровка:
Вот немного часть кода, который я написал для отладки вопрос, однако только первый NSLog получает распечатанный и все это, кажется, все в порядке :
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CoreDataTVCell *cell = (CoreDataTVCell *)[tableView dequeueReusableCellWithIdentifier:self.cellIdentifier forIndexPath:indexPath];
NSLog(@"Cell row: %ld section: %ld", (long)indexPath.row, (long)indexPath.section);
@try {
cell.managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
[cell updateCell];
}
@catch (NSException *exception) {
NSLog(@"Object not found: %@", exception.callStackSymbols);
}
if(!cell)
{
NSLog(@"Cell not found");
}
return cell;
}
Та же проблема происходит и с ТВЦ проще с 2-идентификаторов клеток (по одному для заголовка и один для других строк):
Вот это то, что я получаю, печатая видимые ячейки (кроме первого):
2015-11-19 17:34:28.430 XXX[7483:3224955] ADA APENNINE - <CustomerTVCell: 0x15601e000; baseClass = UITableViewCell; frame = (0 240; 768 120); clipsToBounds = YES; hidden = YES; autoresize = W; layer = <CALayer: 0x1557bdf50>>
2015-11-19 17:34:28.431 XXX[7483:3224955] ADA APENNINE - <CustomerTVCell: 0x15601e000; baseClass = UITableViewCell; frame = (0 240; 768 120); clipsToBounds = YES; hidden = YES; autoresize = W; layer = <CALayer: 0x1557bdf50>>
2015-11-19 17:34:28.431 XXX[7483:3224955] AMED - <CustomerTVCell: 0x156036a00; baseClass = UITableViewCell; frame = (0 480; 768 120); clipsToBounds = YES; autoresize = W; layer = <CALayer: 0x1557b68e0>>
2015-11-19 17:34:28.432 XXX[7483:3224955] AMED - <CustomerTVCell: 0x156036a00; baseClass = UITableViewCell; frame = (0 480; 768 120); clipsToBounds = YES; autoresize = W; layer = <CALayer: 0x1557b68e0>>
2015-11-19 17:34:28.432 XXX[7483:3224955] AMPARO - <CustomerTVCell: 0x1560dc400; baseClass = UITableViewCell; frame = (0 720; 768 120); clipsToBounds = YES; autoresize = W; layer = <CALayer: 0x1556e7980>>
2015-11-19 17:34:28.433 XXX[7483:3224955] AMPARO - <CustomerTVCell: 0x1560dc400; baseClass = UITableViewCell; frame = (0 720; 768 120); clipsToBounds = YES; autoresize = W; layer = <CALayer: 0x1556e7980>>
2015-11-19 17:34:28.433 XXX[7483:3224955] ADA APENNINE - <CustomerTVCell: 0x15601e000; baseClass = UITableViewCell; frame = (0 240; 768 120); clipsToBounds = YES; hidden = YES; autoresize = W; layer = <CALayer: 0x1557bdf50>>
Есть 7 строк, видимых в этом случае, однако, кажется, что некоторые из них повторяются, а других нет.
Вот это то, что должно быть отображено:
2015-11-19 17:45:50.314 X[7483:3224955] Cell row: 0 section: 0
2015-11-19 17:45:50.318 X[7483:3224955] Customer: A LA MODE
2015-11-19 17:45:50.321 X[7483:3224955] Cell row: 1 section: 0
2015-11-19 17:45:50.322 X[7483:3224955] Customer: ADA APENNINE
2015-11-19 17:45:50.325 X[7483:3224955] Cell row: 2 section: 0
2015-11-19 17:45:50.326 X[7483:3224955] Customer: ALTON
2015-11-19 17:45:50.329 X[7483:3224955] Cell row: 3 section: 0
2015-11-19 17:45:50.330 X[7483:3224955] Customer: AMED
2015-11-19 17:45:50.337 X[7483:3224955] Cell row: 4 section: 0
2015-11-19 17:45:50.338 X[7483:3224955] Customer: AMIRA
2015-11-19 17:45:50.360 X[7483:3224955] Cell row: 5 section: 0
2015-11-19 17:45:50.361 X[7483:3224955] Customer: AMPARO
2015-11-19 17:45:50.370 X[7483:3224955] Cell row: 6 section: 0
2015-11-19 17:45:50.371 X[7483:3224955] Customer: AMPARO
Похоже, что ваши ячейки уже используются повторно, хотя они все еще должны быть видны. Используете ли вы разные ячейки с различными идентификаторами CellIdentifiers в вашем представлении таблицы? – TheEye
Да, в первых строках есть сегментированное управление, которое меняет идентификатор ячейки (и fetchresultcontroller) и вызывает метод reloaddata tableview ..., но проблема также возникает, если я не меняю сегментный выбор ... –
Вы можете попробовать распечатать видимые ячейки, их указательные пути и их координаты, чтобы увидеть, что может произойти неправильно. – TheEye