2016-08-05 3 views
0

Я расчета высоты ячейки в программно heightForRowAtIndexPath-Issue Находя высота UITableViewCell

Мой полный метода:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    id cell = [self.tableView dequeueReusableCellWithIdentifier:kCellID]; 

    if([cell isKindOfClass:[Custom class]]) 
    { 
     return 100; 
    } 
    else 
    { 
     return 20; 
    } 
} 

Мое приложение занимает 3-5 секунд, чтобы показать ViewController. Хотя вызывается cellForRowAtIndexPath, и я могу показать журналы в консоли.

Но My ViewController не загружен.

Когда просто вернуть высоту с помощью этого кода приложение работает отлично:

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

    return 100; 
} 

Я не знаю, что это проблема с этой линии:

id cell = [self.tableView dequeueReusableCellWithIdentifier:kCellID]; 

Что мне не хватает в этом вопросе ?

+0

увидеть это http://stackoverflow.com/questions/18206448/how-can-i-get-the-height-of-a-specific-row-in-my-uitableview и http://stackoverflow.com/questions/13968316/get-uitableviewcells-height-after-setting-height-for-each-uitableviewcell –

+0

@ Anbu.Karthik Мне нужно найти тип ячейки, поскольку у меня есть два типа ячейки , это главный вопрос. Всякий раз, когда я использую код, чтобы найти тип ячейки, мое приложение начинает делать задержки – Dalvik

+2

Почему вы не используете свойство isTableViewWithCustomCells или isTableViewWithOtherCustomCells? Это должно быть быстрее. и я думаю, что 'heightForRowAtIndexPath:' может быть вызван до cellForRowAtIndexPath и материала dequeue. – Larme

ответ

0

У вас есть некоторая логика в методе cellForRowAtIndexPath:, которая определяет тип ячейки, которая должна быть такой. Добавьте эту логику в метод heightForRowAtIndexPath:, чтобы определить, какова должна быть высота каждой строки.

0

Ваша эта линия не так

id cell = [self.tableView dequeueReusableCellWithIdentifier:kCellID]; 

это заставит ваш мобильный повторно.

Использование

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    id cell=[tableView cellForRowAtIndexPath:indexPath]; 

    if([cell isKindOfClass:[CustomCellClass class]]) 
    { 
     return 100; 
    } 
    else 
    { 
     return 20; 
    } 
}