gpt4 book ai didi

ios - 在表加载时配置自定义单元格的聪明方法?

转载 作者:行者123 更新时间:2023-11-28 19:00:36 24 4
gpt4 key购买 nike

我有一个 TableView ,其中包含大约 5 个不同的自定义单元格,这些单元格是在 Storyboard中设计的。

这些单元格中的每一个都有自己专用的 UITableViewCell 子类。

cellForRowAtIndexPath 中,我将单元格出队:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:self.cellArray[indexPath.row] forIndexPath:indexPath];

现在的问题是,我想为每个单元调用 configureCell。我的每个自定义单元格类都声明并实现了此方法,但问题是 XCode 会抛出警报,除非我首先将这些单元格转换为它们各自的类,因为就 XCode 而言,这些单元格是 UITableViewCell 单元格。

单独转换每个单元格类型是可行的,但是很冗长,有很多 ifelse if 行。有没有更聪明的方法来做到这一点,也许使用声明方法 configureCell 的协议(protocol)?

最佳答案

没错,有协议(protocol)。我认为它比子类化更灵活,但它取决于每个单元类的语义,并且您始终可以混合和匹配这两种方法。

@protocol CellX
- (void)configure:(id)data;
@end

@interface CellA : UITableViewCell <CellX>
@end

@interface CellB : UITableViewCell <CellX>

@end

在单元格创建方法中:

NSString *identifier = /* pick one for the indexPath and whatnot */
id<CellX> cell = (id<CellX>)[tableView dequeueReusableCellWithIdentifier:<#identifier#>
forIndexPath:indexPath];

/* cell can be of class CellA or CellB depending on the selected identifier */
[cell configure:<#data#>];

除了配置方法之外,您还可以向协议(protocol)添加跨单元共享的任何属性(如 kindstatus 等),无论您使用什么来处理细胞)。

关于ios - 在表加载时配置自定义单元格的聪明方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26300067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com