Это первый раз, когда я задаю вопрос здесь, но я должен сказать, что этот сайт был огромной помощью для меня за последние пару месяцев (iphone-dev-wise), и я благодарю вас за это.
Однако я не нашел решения для этой проблемы: У меня есть UITableView с 2 разделами и без строк, когда приложение запускается в первый раз. Пользователь может заполнить разделы позже, как пожелает (содержание здесь не актуально). UITableView выглядит хорошо, когда заполняется строками, но выглядит довольно уродливым, когда его нет (2 секции заголовка склеиваются вместе без пробела между ними). Вот почему я хотел бы добавить красивое представление "Нет строк" между ними, когда нет строки.
Я использовал viewForFooterInSection:
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
if(section == 0)
{
if([firstSectionArray count] == 0)
return 44;
else
return 0;
}
return 0;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
if(section == 0)
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(200, 10, 50, 44)];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor colorWithWhite:0.6 alpha:1.0];
label.textAlignment = UITextAlignmentCenter;
label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
label.text = @"No row";
return [label autorelease];
}
return nil;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if(section == 0)
{
return [firstSectionArray count];
}
return [secondSectionArray count];
}
Это отлично работает: просмотр нижнего колонтитула появляется только тогда, когда в разделе 0 нет строки. Но мое приложение падает, когда я вхожу в режим редактирования и удаляю последнюю строку в разделе 0:
Ошибка утверждения в - [UIViewAnimation initWithView: indexPath: endRect: endAlpha: startFraction: endFraction: curve: animateFromCurrentPosition: shouldDeleteAfterAnimation: edit:] Завершение приложения из-за неперехваченного исключения "NSInternalInconsistencyException", причина: "Столбцы стоп-кадра должны быть больше, чем начальная доля"
Этого не происходит, если в разделе 0 есть несколько строк. Это происходит только в том случае, если осталось только одна строка.
Здесь код для режима редактирования:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
// If row is deleted, remove it from the list.
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Find the book at the deleted row, and remove from application delegate array.
if(indexPath.section == 0)
{ [firstSectionArray removeObjectAtIndex:indexPath.row]; }
else
{ [secondSectionArray removeObjectAtIndex:indexPath.row]; }
// Animate the deletion from the table.
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationBottom];
[tableView reloadData];
}
}
Кто-нибудь знает, почему это происходит? Благодаря