自定义单元格和UITableViewController建议

时间:2011-07-17 06:35:33

标签: iphone objective-c ipad

我的UITableView有一个自定义单元格。我在我的手机上放了左/左观察者的滑动。如果用户在单元格上滑动,它将调用一个函数。该函数基本上创建了一个需要添加到单元格的UIView。

我希望我的代码能够使用MVC最佳实践。所以我认为适当的做法是将UIView传递给自定义单元格,让我的自定义单元格的实现将它添加到单元格中。在我的自定义单元格中,我也有UIView的属性。

问题是我还需要调整细胞的高度。现在我的方法是:

+ (CGFloat)tableView:(UITableView *)tableView rowHeightForObject:(id)item {

}

这类似于常规的heightForRowAtIndexPath,而不是索引路径它的对象。在这个方法中,我需要确定是否存在需要添加的UIView。如果有,则需要根据该高度进行调整。我似乎无法理解这一点。在这个方法中,我不能做self.optionsView,或访问我的自定义单元子类中的任何属性。那么我该如何检查是否添加了选项?

2 个答案:

答案 0 :(得分:0)

您可以将rowHight属性添加到自定义单元格类,并将另一个height var添加到表视图数据源数据中。 每次更改自定义单元格时,请确保设置高度属性,并将其分配给正确位置的数据源数据。

然后,在heightForRowAtIndexPath内只询问身高数据。

希望很清楚。

答案 1 :(得分:0)

正如Idan指出的那样,只要询问单元格的内容大小就好了。我只想使用这样的标准heightForRowAtIndexPath方法:

//Assuming myCustomCell contains a placeholder for my additional view called innerView.  
//If the place holder is nil I don't need to adjust cells height.
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

    //Get the cellPath and myCustomCell at this path
    NSIndexPath *rowPath = [NSIndexPath indexPathForRow:row inSection:0];
    MyCustomTableCell *myCustomCell = (MyCustomTableCell*)[self.table cellForRowAtIndexPath:rowPath];

    if(myCustomCell.innerView != nil)
        return myCustomCell.innerView.frame.size.height + someDefaultCellHeight;

    else
        return defaultCellHeight;
}