2013-10-01 4 views
0

У меня есть два типа ячеек, в которых я буду использовать свой UITableView, поэтому я создал две ячейки прототипа с другим идентификатором. Я manuelly изменил размер, но когда я компилирую и запускаю, две ячейки имеют одинаковый размер.Два UITableViewCell с разным идентификатором и разной высотой в раскадровке

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

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

я буду иметь вокруг хороших 100 клеток, по крайней мере.

ОБНОВЛЕНИЕ: в моем случае у меня есть табличка с тремя разделами, первая из которых небольшая, вторая и третья - больше.

+1

Быстрый ответ: Нет – NSAddict

+0

Да, может быть, если у вас есть какой-то шаблон (позволяет сказать, каждый даже клетка больше), в противном случае я бы прослушал NSAddict: D – Yanchi

+0

и как бы вы сделали что-то эффективно с точки зрения вычислительной эффективности? PS: JUST UPDATED – nick

ответ

4

Я думаю, что ваш лучший вариант - использовать этот метод tabletable: heightForRowAtIndexPath: delegate, который вы указали, и вернуть высоту, которую хотите.

Вы можете назначить метки для каждого прототипа и использовать if/else if conditional.

Или, если у вас есть подкласса UITableViewCell для каждого прототипа вы могли бы сделать что-то вроде

... 
id cell = [tableView cellForRowAtIndexPath:indexPath]; 
if ([cell isKindOfClass:[CustomCell1 class]]) { 
    // return aNumber; 
} else if ([cell isKindOfClass:[CustomCell2 class]]) { 
    // return aNumber; 
} else { 
    return aNumber; 
} 
... 
0

Если вы знаете, что секции если что определяет высоту ячейки, то вы можете реализовать это следующим образом:

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath*)indexPath { 
    CGFloat result; 
    if (indexPath.section == 0) { 
     result = 160; 
    } else { 
     result = 80; 
    } 
    return result; 
} 

В зависимости от высоты, что вам нужно, конечно.

Смежные вопросы