【问题标题】:More than one custom cell with in the same XIB多个自定义单元格在同一个 XIB 中
【发布时间】:2012-08-25 10:29:08
【问题描述】:

是否可以在同一个 xib 中拥有多个自定义 uitableviewCell?

我正在尝试通过在同一个 xib 中组合不同的自定义单元格然后让表格从中加载不同的单元格来保存 XIB 文件。

在 IB 中,我尝试将每个 uiTableViewCell 类设置为不同的自定义类 .m/.h 实现。这是我尝试过的:

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

static NSString *cellIdentifier = @"DevConfigCell";

DeviceInfoCell *cell = (DeviceInfoCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if(cell == nil)
{

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomTableViewCell~iphone" owner:self options:nil];
    cell = ( DeviceInfoCell *)[nib objectAtIndex:0];

}

return cell;
}

在另一个表中,我会重复使用笔尖,但我会这样做:

    cell = ( SecondDeviceInfoCell *)[nib objectAtIndex:0];

由于某种原因,它总是加载第一个单元格。

这一切都应该奏效吗?或者有什么办法吗?

谢谢

【问题讨论】:

    标签: ios uitableview


    【解决方案1】:

    我正在尝试通过组合不同的自定义单元格来保存 XIB 文件 在同一个xib中

    为什么?您可以创建的 .xib 文件的数量没有限制。

    然后让表格从中加载不同的表格。

    当您加载 .xib 时,所有文件包含的对象都会被创建。如果您将 10 个自定义单元格放入一个 .xib 中,加载该 .xib 将为这 10 个单元格中的每一个创建一个实例。这可能不是你想要的。将单元格保存在单独的 .xib 中可能是一个更好的计划。

    cell = ( SecondDeviceInfoCell *)[nib objectAtIndex:0];

    您似乎对强制转换的作用感到困惑。当您从一种类型转换为另一种类型时,您不会以某种方式选择不同的对象。如果nib 数组具有相同的内容,则[nib objectAtIndex:0] 返回的对象总是相同的。强制转换只是改变编译器与值关联的类型;在这种情况下,它会改变指针的类型。

    您可以在视图控制器中创建IBOutletCollection,然后将几个不同的自定义单元连接到该插座集合;这将为您提供一组单元格,您可以使用objectAtIndex: 从中进行选择。但同样,这确实不是一个好主意,因为每次您只需要一个单元格时,您都会在文件中创建 所有 个单元格。

    【讨论】:

    • 我不知道我是否同意@mskw,但是出于组织原因,我觉得这很有趣。在不同的文件中有多个单元格是非常不方便的。另外,在我看来,不要在情节提要中混合单元定义和屏幕。
    【解决方案2】:
       NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"PlayerAvgsTableCell" owner:nil options:nil];
        for(id currentObject in topLevelObjects)
        {
            if([currentObject isKindOfClass:[PlayerAvgsTableCell class]])
            {
                cell = (PlayerAvgsTableCell *)currentObject;
                break;
            }
        }
    }
    

    【讨论】:

    • 也许你应该添加一个解释?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多