UITableView委托方法

时间:2014-09-13 19:18:00

标签: ios objective-c uitableview

我正在尝试调整表格视图最后一行的高度。在尝试查找最后一行的索引时,我似乎遇到了某种递归循环。在我的heightForRowAtIndexPath:方法中,我有以下内容:

-(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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我建议不要使用tableView委托获取部分和行数,但直接从数据源获取此信息。