2014-09-13 2 views
1

Я пытаюсь настроить высоту только последней строки таблицы. Кажется, я сталкиваюсь с каким-то рекурсивным циклом при попытке найти индекс последней строки. В моем heightForRowAtIndexPath: методе я имею следующее:Метод делегата UITableView

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
CGFloat height = 60; 

    NSInteger lastSectionIndex = [tableView numberOfSections] - 1; 
    NSInteger lastRowIndex = [tableView numberOfRowsInSection:lastSectionIndex] - 1; // BLOWS UP! 

    if ((indexPath.section == lastSectionIndex) && (indexPath.row == lastRowIndex)) { 
     height = 44; 
    } 

    return height; 
} 

Если я настроить код праведный немного, он работает.

NSInteger lastRowIndex = [self tableView:tableView numberOfRowsInSection:lastSectionIndex] - 1; // WORKS! 

Может ли любой гуру Objective-C/iOS пролить свет на то, что здесь происходит? Почему один синтаксис работает над другим? Разве это не тот же самый метод?

Вы можете проверить код здесь для контекста: https://github.com/phungkytown/chapter8_gold

Любая помощь очень ценится!

ответ

0

Я бы посоветовал не приглашать делегатов tableView для получения количества разделов и количества строк, но получить эту информацию непосредственно из вашего источника данных.

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