Размер ряда отличается от других рядов - PullRequest
0 голосов
/ 21 августа 2011

Мне нужно создать таблицу с пользовательскими ячейками, которые имеют разный размер (высота). Могу ли я изменить размер строки только из одной или двух ячеек? Любая идея, как ??

Спасибо

Ответы [ 2 ]

2 голосов
/ 21 августа 2011

создайте изменяемый массив, который содержит высоту всех ваших строк. Если у вас есть несколько разделов, вы можете поместить несколько массивов в изменяемый массив. допустим, у вас есть 2 раздела и 2 строки для каждого, а затем присвойте свой контроллер табличного представления:

@property (nonatomic, retain) NSMutableArray *heightData;

в файле .m:

- (NSMutableArray *)heightData
{
    if(nil == heightData)
    {
        heightData = [[NSMutableArray array] retain];

        //various heights for your different rows in different sections:
        NSMutableArray *sectionArray1 = [NSMutableArray arrayWithObjects:[NSNumber numberWithFloat:44],[NSNumber numberWithFloat:44]];
        NSMutableArray *sectionArray2 = [NSMutableArray arrayWithObjects:[NSNumber numberWithFloat:44],[NSNumber numberWithFloat:44]];

        [heightData addObject:sectionArray1];
        [heightData addObject:sectionArray2];
    }

    return heightData;
}

затем, в файле .m вашего контроллера табличного представления есть метод протокола, который мы должны использовать, вы можете реализовать его следующим образом:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSMutableArray *rowArray = [self.heightData objectAtIndex:indexPath.section];
    NSNumber *height = [rowArray objectAtIndex:indexPath.row];
    return [height floatValue];
}

последний шаг: если вы хотите изменить высоту строки, скажем, это строка в разделе 1, строка 0, тогда вы можете сделать это:

NSMutableArray *rowArray = [self.heightData objectAtIndex:1];
[rowArray replaceObjectAtIndex:0 withObject:[NSNumber numberWithFloat:55]];\\a new data
[self.tableView beginUpdates];
[self.tableView endUpdates];

тогда табличное представление изменит размер строки с плавной анимацией, вы можете явно изменить размер и изменить расположение представлений внутри строки, но я не рекомендую, чтобы табличное представление автоматически сделало бы это для вас, если у вас есть ячейка custom-xib, и параметры автоматического изменения размера установлены правильно

1 голос
/ 21 августа 2011

Использование heightForRowAtIndexPath из протокола UITableViewDelegate.

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