gpt4 book ai didi

ios - 自定义表格单元格 : "class is not key value coding-compliant"

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:15:35 26 4
gpt4 key购买 nike

更新:我决定重新开始,因为我还处于这个应用程序的早期阶段。我重复了所有内容,无论出于何种原因,自定义单元格都出现了第二次。我会保留旧文件以确认另一个答案,因为我想我不是唯一会遇到此问题的人。

我正在构建一个选项卡式应用程序,它需要在其表格 View 中使用自定义单元格。我已经这样做了几次,在连接这些自定义单元格时,我似乎总是遇到减速带。在我开始使用名为 SongsTVC 的 TableView Controller 中的自定义单元格之前,该应用程序启动正常。我收到终止契约(Contract)的原因是:

[<SongsTVC 0x6831330> setValue:forUndefinedKey:]: 
this class is not key value coding-compliant for the key albumLabel.

我正在使用 this tutorial并且之前已经成功地使用过它(为 ARC 和 iOS 5 改变了一些东西)。事实上,我使用的代码和 IB 布局是基于我已有的一个工作项目。我知道当您将导出连接到文件所有者而不是单元本身时,通常会出现此错误。我没有犯这个错误,但它仍然给我这个错误。到目前为止,我已经删除了它有问题的标签,甚至完全删除了单元格的文件以便重新开始。任何帮助,将不胜感激。

SongCell.h

#import <UIKit/UIKit.h>

@interface SongCell : UITableViewCell{

}

@property(nonatomic, assign) IBOutlet UILabel *titleLabel;
@property(nonatomic, assign) IBOutlet UILabel *artistLabel;
@property(nonatomic, assign) IBOutlet UILabel *albumLabel;

@end

SongCell.m

#import "SongCell.h"

@interface SongCell ()

@end

@implementation SongCell

@synthesize titleLabel, artistLabel, albumLabel;

@end

SongsTVC.h - TableViewController 的 header

#import <UIKit/UIKit.h>

@interface SongsTVC : UITableViewController{
UINib *cellLoader;
}

@end

SongsTVC.m - 相关的 TableViewController 方法

#import "SongsTVC.h"
#import "SongCell.h"

@interface SongsTVC ()

@end

static NSString *CellClassName = @"SongCell";

@implementation SongsTVC

- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
cellLoader = [UINib nibWithNibName:CellClassName bundle:[NSBundle mainBundle]];
}
return self;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
SongCell *cell = (SongCell *)[tableView dequeueReusableCellWithIdentifier:CellClassName];

if (!cell)
{
//CRASH ERROR POINTS HERE
NSArray *topLevelItems = [cellLoader instantiateWithOwner:self options:nil];
cell = [topLevelItems objectAtIndex:0];
}

// Configure the cell...
cell.titleLabel.text = @"SONG";
cell.artistLabel.text = @"Artist";
cell.albumLabel.text = @"Album";

return cell;
}

界面生成器 The cell, its outlets, and its class


File's owner

Report

注意:单元格标识符已在 IB 中设置为“SongCell”并且文件所有者是 UITableViewController,因为多个表将使用此单元格。只要 View 是表,它就应该可以工作(过去有)。


更新:XML 格式的 xib 文件已pasted here.

最佳答案

我今天遇到了这个确切的问题,同时为另一个 SO 答案制作了一个示例项目!看起来您的 xib 正在尝试将 socket 连接到您的 View Controller 而不是您的单元格。在您的屏幕截图中, socket 看起来已正确定义,但有时旧的 socket 定义会留在底层 XML 中并导致此类崩溃。

例如,如果您在连接某些 socket 后更改了文件所有者类,这可能会混淆它。

您可以通过将 xib 作为“源代码”打开找到它,查找元素并检查是否只有您期望的条目。也可以在 XML 文件中搜索 albumLabel

如果这不起作用,您可能需要废弃 xib 并重新开始。

关于ios - 自定义表格单元格 : "class is not key value coding-compliant",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10706646/

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