Как убрать лишний пробел между элементами в TTSectionedDataSource под iOS5 - PullRequest
2 голосов
/ 10 января 2012

Я испытываю дополнительный разрыв между TTableTextItems в TTSectionedDataSource под iOS5, этот же код не показывает дополнительное пространство под iOS 4. Вы можете увидеть это на изображении ниже.левая сторона - IOS 4.3, а правая - iOS5.

enter image description here

Мой код TTTableViewController:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        self.variableHeightRows = NO;
        self.tableViewStyle = UITableViewStyleGrouped;
        self.autoresizesForKeyboard = YES;
    }
    return self;
}

- (void) createModel {
    self.dataSource = [[[NewDataSource alloc] init] autorelease];
}

- (id<UITableViewDelegate>)createDelegate {
    return [[[NewTableDelegate alloc] initWithController:self] autorelease];
}

Код TTTableViewDelegate:

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    if (section == 0) {
        return 70   ;
    }
    return 200;
}

И мой TTSectionedDataSource:

- (void) tableViewDidLoadModel:(UITableView *)tableView {
    [super tableViewDidLoadModel:tableView];
    [self.sections addObject:@"Section 1"];
    [self.items addObject:[NSArray arrayWithObject:[TTTableTextItem itemWithText:@"TTTableTextItem1" URL:@""]]];
    [self.sections addObject:@"Section 2"];
    [self.items addObject:[NSArray arrayWithObject:[TTTableTextItem itemWithText:@"TTTableTextItem 2" URL:@""]]];
}

Проблема возникает из-за того, что метод - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section в TTTableViewDelegate вызывается 2 раза (со значениями 1 и 0) под iOS4 и вызывается4 раза (значения 1,1,0 и 0) в iOS5, поэтому я вижу дополнительный разрыв между TTTableTextItems.

Любые идеи о том, почему это происходит и как это предотвратить?

Ответы [ 2 ]

0 голосов
/ 27 января 2012

Проблема связана с новым поведением - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section под iOS5.

Из документации Apple:

До iOS 5.0 табличные представления автоматически изменяли размеры нижних колонтитулов до 0 для разделов, где tableView: viewForFooterInSection: возвращал нулевое представление. В iOS 5.0 и более поздних версиях в этом методе необходимо возвращать фактическую высоту для каждого нижнего колонтитула раздела.

0 голосов
/ 11 января 2012

Можете ли вы опубликовать весь код для TTSectionedDataSource?

Если вы считаете, что это ошибка, связанная с iOS 5, вы можете открыть проблему github на https://github.com/facebook/three20/issues с максимально возможным количеством деталей

...