Iphone 如何在代码中识别UITableViewCell?

Iphone 如何在代码中识别UITableViewCell?,iphone,ios,objective-c,cocoa-touch,uitableview,Iphone,Ios,Objective C,Cocoa Touch,Uitableview,如果我有一个表视图,其中包含不同类型的单元格,每个单元格都有其唯一的标识符,那么在我将其出列之前,我是否可以找出indepath与哪个重用标识符相关: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 如果有另一种方法可以在细胞上进行某种反射,那也很好 谢谢你可以,但是你必须做所有的工作。您的工作

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

- (UITableViewCell *)tableView:(UITableView *)tableView 
                     cellForRowAtIndexPath:(NSIndexPath *)indexPath
如果有另一种方法可以在细胞上进行某种反射,那也很好


谢谢

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

但是,您不能在单元格上进行反射,因为单元格还不存在。这就是
-tableView:cellforrowatinexpath:
的目的

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


编辑:听起来您可能对什么是单元重用标识符以及它是如何生成的有些困惑。单元重用标识符是附加到tableview内单元的任意字符串。当您要求将某个单元格出列时,tableview会检查是否有任何具有该重用标识符的未使用单元格可用。如果所有单元都是相同类型的单元,并且以相同的方式配置,那么您将只有一个重用标识符,它可以是您选择的任何字符串。只要确保在调用
-dequeueReusableCellWithIdentifier:
UITableViewCell
-initWithStyle:reuseIdentifier:
时都使用该字符串,最终,您是CellId的发起人,将它们提供给
表格视图:CellForRowatinexPath:
中新创建的单元格,因此,您不需要向表视图询问cellid。实现您所寻求的目标的最佳方法是向类中添加函数:

if(cell != nil)    
NSLog(@"%@", cell.reuseIdentifier);
-(NSString *)cellReuseIdForIndexPath:(NSIndexPath *)indexPath;

该函数可以在字典、数组或任何其他方法中查找单元格。无论何时需要,都可以使用该函数,只要它与表视图中显示的数据保持一致,它就可以工作。

您需要将数据存储为需要什么类型的单元格,因为可重用标识符是从中选择要重用的单元格的池

如果

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

如果某个单元可重用,则从名为“重用”的池中拾取该单元,否则将创建一个新单元。因此,您无法找到哪个indexpath属于哪个可重用标识符。

您能解释一下您的答案吗?一个简单的摘要就可以了。方法传递了indexPath。您只需检查单元格标识符,然后对其执行任何操作。例如:您可以使用switch case语句。就像switch(cell.reuseIdentifier){case1:@“Cell1”case2:@“cell2”等}我确切地知道发生了什么,但我在你的回答中想改进它。在屏幕上放一些代码而不解释原因不是最好的办法。正如我在回答中所解释的,在这种方法中,您无法检查单元格中的重用标识符。单元格还不存在。嗯,你问过如何找到indexPath与哪个标识符相关,因为这就是答案!