Dou*_*ith 15 objective-c uitableview ios
我收到以下错误:
*由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法使用标识符FontCell对单元格进行出列 - 必须为标识符注册一个nib或类或在故事板中连接原型单元格'
我不确定我到底做错了什么.我设置了单元格标识符(以编程方式,因为它不是通过Interface Builder创建的)并且执行我认为我应该在委托方法中执行的所有操作,但是当我尝试加载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;
}
我究竟做错了什么?
csc*_*530 28
最简单的修复方法是将其更改为FontCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];  与当前代码一样,如果使用此方法,则必须检查以确定cell是否存在nil.
或者,您可以注册一个UINib或Class在与之关联的表级别@"FontCell"
例如(上viewDidLoad):
[self.tableView registerClass: [FontCell class] forCellReuseIdentifier:@"FontCell"];
那你可以做
FontCell *cell = [tableView dequeueReusableCellWithIdentifier:@"FontCell" forIndexPath:indexPath];
这种方法的好处在于你知道你的单元永远不会nil,所以你可以立即开始修改它.
| 归档时间: | 
 | 
| 查看次数: | 29784 次 | 
| 最近记录: |