gpt4 book ai didi

ios - 使用代码更改 UITableViewCell 的样式

转载 作者:行者123 更新时间:2023-11-28 18:56:33 26 4
gpt4 key购买 nike

我有一个 TableViewController 子类用作我的搜索结果 Controller 。我没有 Storyboard或 xib,所以它完全用代码实现。我只实现了数据源方法。

我正在尝试制作样式为 UITableViewCellStyleSubtitle 的单元格,但无法使其正常工作。在 viewDidLoad 中,我使用代码 [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];,然后在 cellForRowAtIndexPath: ,我有这个:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
}

但是,考虑到我的 registerClass 调用,我认为 cell 永远不会为 nil,因此永远不会更改默认样式。如果我删除 registerClass 调用,我会遇到崩溃并显示以下消息:'无法使具有标识符 Cell 的单元格出队 - 必须为标识符注册一个 nib 或一个类,或者在 Storyboard中连接一个原型(prototype)单元格'.删除单元格的 if block 没有任何效果。

这是一个很小的变化,我觉得没有必要继承 UITableViewCell 或在 Storyboard 中构建它。任何帮助表示赞赏。

最佳答案

如果您调用 dequeueReusableCellWithIdentifier:forIndexPath:

cell 永远不会为 nil

苹果说: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/#//apple_ref/occ/instm/UITableView/dequeueReusableCellWithIdentifier :

dequeueReusableCellWithIdentifier:This method dequeues an existing cell if one is available or creates a new one using the class or nib file you previously registered. If no cell is available for reuse and you did not register a class or nib file, this method returns nil.

dequeueReusableCellWithIdentifier:forIndexPath: This method dequeues an existing cell if one is available or creates a new one based on the class or nib file you previously registered.

尝试这样做:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
}

关于ios - 使用代码更改 UITableViewCell 的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31931778/

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