gpt4 book ai didi

ios - 当我的 UITableView 尝试加载时,为什么我会收到有关无法出队的错误?

转载 作者:技术小花猫 更新时间:2023-10-29 10:06:38 26 4
gpt4 key购买 nike

我收到以下错误:

* Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier FontCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'

我不确定我做错了什么。我设置了单元格标识符(以编程方式,因为它不是通过 Interface Builder 创建的)并执行我认为我应该在委托(delegate)方法中执行的所有操作,但是当我尝试加载 UITableView 时我仍然遇到该错误。

这是相关代码(值得注意的是我已经将 UITableViewCell 子类化用于自定义选项):

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.fonts.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"FontCell";

FontCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];

if (!cell) {
cell = [[FontCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"FontCell"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}

int row = indexPath.row;

cell.fontFamilyLabel.text = self.fonts[row];

return cell;
}

这是我在子类 UITableViewCell (FontCell) 中更改的唯一方法:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
self.fontFamilyLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 200, 20)];
self.fontFamilyLabel.textAlignment = NSTextAlignmentCenter;

[self.contentView addSubview:self.fontFamilyLabel];
}
return self;
}

我究竟做错了什么?

最佳答案

最简单的解决方法是将其更改为 FontCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];与您当前的代码一样,您必须检查以确保 cell不是 nil如果你采用这种方法。


或者,您可以注册一个 UINibClass在与 @"FontCell" 相关联的表级别

例如(在 viewDidLoad 中):

[self.tableView registerClass: [FontCell class] forCellReuseIdentifier:@"FontCell"];

然后你可以做

FontCell *cell = [tableView dequeueReusableCellWithIdentifier:@"FontCell" forIndexPath:indexPath];

这种方法的好处是你知道你的手机永远不会是 nil , 因此您可以立即开始修改它。

关于ios - 当我的 UITableView 尝试加载时,为什么我会收到有关无法出队的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15773275/

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