UITableView单元格不适合UITableView高度

时间:2015-05-08 07:41:46

标签: objective-c uitableview

我下载了Json数据然后我填充了我的自定义UITableView,问题是即使我根据我下载的元素数量计算tableview的高度,单元格也不适合tableview的整个高度,所以我的最终情况是一个包含n个元素的tableview,其高度为n * 100,但单元格只适合它的一部分。 这是我用来计算高度的代码:

//callback that contains the items I download
-(void)productsDownloaded:(NSArray *)items
{

    _productsDetails = items;

    CGFloat height = 100;
    height *= items.count;

    CGRect tableFrame = _customTableView.frame;
    tableFrame.size.height = height;
    _customTableView.frame = tableFrame;

    [_customTableView reloadData];

}

我也尝试过:

_customTableView.alwaysBounceVertical = NO;
_customTableView.scrollEnabled = NO;

但没有结果..我怎样才能告诉细胞符合细胞的高度?

1 个答案:

答案 0 :(得分:1)

要实现可滚动的表格视图,您必须使用tableView:heightForRowAtIndexPath:委托方法来指定大小(高度)或单元格,而不仅仅是更改表格视图的框架。

示例:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    //TODO: Calculate cell height
    return 60.0f;
}

要在一个屏幕上显示所有单元格,表格视图单元格的总高度必须等于表格视图的高度,因此一个表格视图单元格的高度应为:

CGFloat cellHeight = CGRectGetHeight(tableView.frame) / numberOfCells;

但是,我真的不明白你为什么要这样做。表格视图的全部原因是为单元格和滚动设置了固定的高度(就像设置应用程序那样)。