如何在代码中识别UITableViewCell?

时间:2013-03-28 14:49:08

标签: iphone ios objective-c cocoa-touch uitableview

如果我有一个包含不同类型单元格的表格视图,每个单元格都有唯一的标识符,我可以在我将其取列之前找出indexPath与之相关的重用标识符:

- (UITableViewCell *)tableView:(UITableView *)tableView 
                     cellForRowAtIndexPath:(NSIndexPath *)indexPath

如果有另一种方法可以对细胞进行某种反射,那也没关系。

由于

4 个答案:

答案 0 :(得分:2)

你可以,但你必须做所有的工作。您的工作是检查indexPath并确定为特定单元格生成的内容类型,然后出列/创建该类型的单元格,进行设置并返回。

但是,您无法对细胞进行反射,因为细胞尚不存在。这就是-tableView:cellForRowAtIndexPath:的目的。

你可能采用的一种方法是让一个数组包含关于每个单元格的信息字典(每个表格部分需要一个数组;我只假设只有一个部分)。在-tableView:cellForRowAtIndexPath:的开头,您将使用索引路径中的行号索引数组,然后检查字典的值以确定要出列的单元格类型以及如何设置它。

编辑:听起来您可能对细胞重用标识符是什么以及如何生成它感到困惑。单元重用标识符是附加到tableview内的单元格的任意字符串。当您要求将单元格出列时,tableview会检查是否有任何具有该重用标识符的未使用单元格可用。如果所有单元格都是相同类型的单元格并以相同方式配置,那么您将只有一个重用标识符,它可以是您选择的任何字符串。只需确保在调用-dequeueReusableCellWithIdentifier:UITableViewCell的{​​{1}}时使用该字符串。

答案 1 :(得分:0)

最终,您是cellIds的创始人,将它们提供给tableView:cellForRowAtIndexPath:中新创建的单元格,因此您不需要向表格视图询问cellIds。实现目标的最佳方法是为您的班级添加一项功能:

-(NSString *)cellReuseIdForIndexPath:(NSIndexPath *)indexPath;

该函数可以在字典,数组或任何其他意思中查找cellIds。在您需要时使用该功能,只要它与您在表格视图中显示的数据保持一致,它就会起作用。

答案 2 :(得分:0)

您需要存储数据,以确定您需要什么类型的单元格的索引路径,因为重新使用标识符是从中挑选单元格以供重用的池。

例如:如果

 reusableidentifier = @"reuse"; then when 
-dequeueReusableCellWithIdentifier:

用于从名为“reuse”的池中选择一个单元,如果一个单元可用于重用,则创建一个新单元。因此,您无法找到哪个索引路径属于哪个可重用标识符。

答案 3 :(得分:-1)

if(cell != nil)    
NSLog(@"%@", cell.reuseIdentifier);