我知道返回heightForRowAtIndexPath时单元格的内容。在此函数中,如何获取单元格对象?
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
}
如果我试试这个
[tableView cellForRowAtIndexPath:indexPath]
它失败并在无限循环中熄灭。
有什么想法吗?
答案 0 :(得分:26)
调用self(委托)而不是tableView本身。
id cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
答案 1 :(得分:2)
使用:func dequeueReusableCellWithIdentifier(identifier: String) -> AnyObject?
UITableView
不要使用:func dequeueReusableCellWithIdentifier(identifier: String, forIndexPath indexPath: NSIndexPath) -> AnyObject
可能的原因:heightForRowAtIndexPath
之前调用cellForRowAtIndexPath
,此方法使用索引路径根据单元格在表视图中的位置执行其他配置。但是既然如此,仍然没有细胞,因此我认为它会进入无限循环。
答案 2 :(得分:1)
调用heightForRowAtIndexPath:
时尚未创建单元格,因此无法“获取”单元格。相反,查看您的模型并确定单元格的高度。
如果您担心长字符串并且需要更多垂直空间,请考虑使用sizeWithFont:forWidth:lineBreakMode:
。文档:https://developer.apple.com/library/ios/#documentation/uikit/reference/NSString_UIKit_Additions/Reference/Reference.html
答案 3 :(得分:0)
我认为你不能或你应该。 您需要从indexPath确定要在相应单元格中显示哪些数据,从而计算出所需的单元格高度。
因此,您需要编写一些代码,以便从indexPath获取数据模型中的正确数据。
答案 4 :(得分:-4)
uitableviewcell *ce=[self.view viewwithtag:indexPath.row];
返回单元格对象。