Заголовок пользовательского раздела UITableView отображается под ячейками - PullRequest
1 голос
/ 04 декабря 2010

У меня есть собственный заголовок раздела в моем UITableView, и я не могу понять, почему они появляются ниже UITableViewCell таблицы. Смотрите скриншоты:

UITableViewCell are above the section header

Это код, который создает заголовок раздела:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section];
    if (sectionTitle == nil) {
        return nil;
    }

    return [LojaInfoHeaderView lojaInfoHeaderForSection:section withTitle:sectionTitle opened:[self sectionIsOpen:section] andDelegate:self];
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return [LojaInfoHeaderView viewHeight];
}

И ячейка раздела вставляется или удаляется, когда пользователь касается заголовка раздела:

- (void)lojaInfoHeader:(LojaInfoHeaderView *)lojaInfoHeader sectionDidOpen:(NSInteger)section {
    NSArray *indexPathsToInsert = [self indexPathsForSection:section];
    [self setSection:section open:YES];
    [_tableView insertRowsAtIndexPaths:indexPathsToInsert withRowAnimation:UITableViewRowAnimationTop];
}

- (void)lojaInfoHeader:(LojaInfoHeaderView *)lojaInfoHeader sectionDidClose:(NSInteger)section {
    NSArray *indexPathsToDelete = [self indexPathsForSection:section];
    [self setSection:section open:NO];
    [_tableView deleteRowsAtIndexPaths:indexPathsToDelete withRowAnimation:UITableViewRowAnimationTop];    
}

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

Обновление, чтобы показать, как создаются вещи

Вот методы класса, которые я использую:

+ (CGFloat)viewHeight {
    return 44.0;
}

+ (LojaInfoHeaderView *)lojaInfoHeaderForSection:(NSInteger)section withTitle:(NSString *)title opened:(BOOL)isOpen andDelegate:(id<LojaInfoHeaderDelegate>)delegate {
    LojaInfoHeaderView *newHeader = [[[LojaInfoHeaderView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)] autorelease];
    newHeader.section = section;
    [newHeader setTitle:title];
    newHeader.delegate = delegate;
    [newHeader setOpen:isOpen animated:NO];
    return newHeader;
}

Ответы [ 2 ]

0 голосов
/ 04 декабря 2010

Я нашел проблему.Я устанавливал backgroundColor, используя альфа (да, я не могу поверить, что я пропустил это).

Неверный код в initWithFrame:

self.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.1];

Правильный код:

self.backgroundColor = [UIColor colorWithRed:0.89 green:0.89 blue:0.89 alpha:1.0];
0 голосов
/ 04 декабря 2010

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

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