【问题标题】:How to implement multiple custom cells with willDisplayCell method?如何使用 willDisplayCell 方法实现多个自定义单元格?
【发布时间】:2016-05-28 01:33:07
【问题描述】:

我正在尝试在 willDisplayCell 方法中实现两个自定义单元格,customCellView1customCellView2 - 这似乎只支持一个单元格。有没有办法重写它以包括两个? 谢谢。

  • (void)tableView: (UITableView *)tableView willDisplayCell: (customCellView1 *)cell forRowAtIndexPath: (NSIndexPath *)indexPath {

【问题讨论】:

    标签: ios objective-c uitableview


    【解决方案1】:

    这一切最终都取决于您在cellForRowAtIndexPath: 中的dequeue 调用。您可以指定重用标识符。因此,如果这一行需要类型 1 单元格,则为类型 1 提供重用标识符,但如果此行需要类型 2 单元格,则为类型 2 提供重用标识符。然后根据它是哪一个进行分支。

    好吧,重用标识符已附加到单元格。所以现在当你到达willDisplayCell: 时,同样的情况也是如此:你首先转换为UITableViewCell*,然后根据它的类型检查单元格的重用标识符和分支。

    【讨论】:

    • 但是,我会在这里重新考虑您的策略。几乎不需要实现willDisplayCell。您应该能够完成cellForRow 中的所有工作。
    【解决方案2】:

    在 if/else 中检查单元格的类。

    - (void)tableView:(UITableView *)tableView willDisplayCell: (UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
        if ([cell is kindOfClass:[CustomCellClass1 class]] ) {
           [(CustomCellClass1 *)cell doWhatever];
        }
        else if ([cell is kindOfClass:[CustomCellClass2 class]] ) {
           [(CustomCellClass2 *)cell doSomethingDifferent];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多