2011-04-12 179 views

回答

0

我不认为你可以或你应该。 您需要从indexPath中确定将在相应单元格中显示哪些数据,然后计算单元格所需的高度。

因此,您需要编写一些代码才能从indexPath获取数据模型中正确的数据。

+1

这是错误的,你可以在这种情况下发送'tableView:cellForRowWithIndexPath'。 @user ...只是将它发送给错误的对象。 – XJones 2011-04-12 17:57:10

26

调用self(委托)而不是tableView本身。

id cell = [self tableView:tableView cellForRowAtIndexPath:indexPath]; 
+2

如果您的cellForRowAtIndexPath正在使用heightForRowAtIndexPath,那么将始终存在无限递归。如果是这样,你将不得不采取不同的设计方式。 – NWCoder 2011-04-12 17:47:32

+4

不是推荐的做法。 heightForRowAtIndexPath在cellForRowAtIndexPath之前被调用,出于某种原因,您应该能够根据您拥有的数据计算高度。也不建议使用heightForRowAtIndexPath,除非您确实需要为单元格设置不同的高度,因为随着数据集大小的增加,它会慢得多。 – Joe 2011-04-12 17:50:45

+4

@Joe:半不赞同。如果你可以很容易地计算高度W/O需要的细胞,那很好。有些情况下需要实例化单元格以了解它的高度。我有很多自定义单元格类,它们足够复杂,无法计算子视图的高度而无法计算高度。一些Apple例子也是这样做的。 – XJones 2011-04-12 17:59:01

-4
uitableviewcell *ce=[self.view viewwithtag:indexPath.row]; 

它返回单元对象。

+0

这样做只会使用该标签创建单元格。另外请注意,这可能会对重复使用的单元有问题,因为它们可能会在您查找它时出列。 – NWCoder 2011-04-12 21:11:30

2

使用func dequeueReusableCellWithIdentifier(identifier: String) -> AnyObject?UITableView
不要使用func dequeueReusableCellWithIdentifier(identifier: String, forIndexPath indexPath: NSIndexPath) -> AnyObject
可能原因heightForRowAtIndexPathcellForRowAtIndexPath之前调用这个方法使用索引路径来执行基于表视图单元格的位置的附加配置。但是,既然现在还没有细胞,因此我认为它会无限循环。