我的UITableView有一个自定义单元格。我在我的手机上放了左/左观察者的滑动。如果用户在单元格上滑动,它将调用一个函数。该函数基本上创建了一个需要添加到单元格的UIView。
我希望我的代码能够使用MVC最佳实践。所以我认为适当的做法是将UIView传递给自定义单元格,让我的自定义单元格的实现将它添加到单元格中。在我的自定义单元格中,我也有UIView的属性。
问题是我还需要调整细胞的高度。现在我的方法是:
+ (CGFloat)tableView:(UITableView *)tableView rowHeightForObject:(id)item {
}
这类似于常规的heightForRowAtIndexPath,而不是索引路径它的对象。在这个方法中,我需要确定是否存在需要添加的UIView。如果有,则需要根据该高度进行调整。我似乎无法理解这一点。在这个方法中,我不能做self.optionsView,或访问我的自定义单元子类中的任何属性。那么我该如何检查是否添加了选项?
答案 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;
}