一个NIB中的几个自定义UITableViewCells - 如何在代码中引用?

Posted

技术标签:

【中文标题】一个NIB中的几个自定义UITableViewCells - 如何在代码中引用?【英文标题】:Several Custom UITableViewCells in one NIB - how to refer to in code? 【发布时间】:2010-10-29 21:28:26 【问题描述】:

我正在使用本页概述的方法创建自定义 UITableViewCells:

http://icodeblog.com/2009/05/24/custom-uitableviewcell-using-interface-builder/

所以我的 cellForRowAtIndexPath 代码看起来有点像这样:

static NSString *CellIdentifier = @"CustomCell";
TableCellWithLogo *cell = (TableCellWithLogo *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) 
    NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"TableCells" owner:nil options:nil];
    for (id currentObject in nibObjects)
       
        if ([currentObject isKindOfClass:[TableCellWithLogo class]] )
        
            cell = (TableCellWithLogo *)currentObject;
        
    

cell.customTextLabel.text = [tableArray objectAtIndex:indexPath.row];
return cell;

现在,我正在创建的表格看起来像是分组 tableview 样式的程式化版本,带有阴影等。因此它需要四种可能的表格样式(顶部、中心、底部 .. 和顶部 + 底部)只显示一个单元格)。

我无法弄清楚如何将所有这些表格单元格放入一个笔尖,然后参考它们。目前我有一个带有 UITableViewCell 的笔尖,其类是“TableCellWithLogo”。这个类有所有相关的 IBOutlets。如果我将几个 UITableViewCells 放在笔尖(所有 TableCellWithLogo 类)中,我将如何在代码中区分它们?您可以在上面的示例中看到我正在查找类:

if ([currentObject isKindOfClass:[TableCellWithLogo class]] )

..但是所有的类都是一样的,所以我不确定如何区分?

【问题讨论】:

【参考方案1】:

创建一个空笔尖并向其添加表格视图单元格。此外,为它们中的每一个创建一个相应的类并为它们中的每一个分配相关的类(参见屏幕截图)。

然后,在 cellForRowAtIndexPath 中,您需要根据 indexPath.row 创建不同的单元格

【讨论】:

谢谢。我想你误解了我的问题,或者我没有说清楚。所有单元格都有相同的 IBOutlets,所以我希望它们使用相同的类。我通过在 IB 中为每个 Cell 更改标签然后引用它们解决了这个问题:if ([(TableCellWithLogo *)currentObject tag] == 1) cell = (TableCellWithLogo *)currentObject; 哦,对不起。很高兴听到您找到了方法。

以上是关于一个NIB中的几个自定义UITableViewCells - 如何在代码中引用?的主要内容,如果未能解决你的问题,请参考以下文章

XCode/Cocoa Mac 改变视图

将子类 UIView 添加到具有自动布局约束的 Nib

创建标题 NIB 并在所有视图上显示

SWIFT:表格视图中的 2 个自定义单元格。怎么了?

在mysql中实现split函数的几种方法

基于 Woocommerce 3 中的 2 个自定义字段的产品正常价格计算