更新:我决定重新开始,因为我还处于这个应用程序的早期阶段。我重复了所有内容,无论出于何种原因,自定义单元格都进行了第二次。我将保留旧文件以确认另一个答案,因为我想我不是唯一会遇到此问题的人。
我正在构建一个需要在其表格视图中自定义单元格的选项卡式应用程序。我已经这样做了几次,在连接这些自定义单元时,我似乎总是遇到减速带。该应用程序启动良好,直到我开始在我的表格视图控制器中使用名为 SongsTVC 的自定义单元格。我收到终止合同的原因是:
[<SongsTVC 0x6831330> setValue:forUndefinedKey:]:
this class is not key value coding-compliant for the key albumLabel.
我正在使用本教程,并且之前已经成功使用过它(为 ARC 和 iOS 5 更改了一些内容)。事实上,我使用的代码和 IB 布局是基于我已经在工作的项目。我知道当您将插座连接到文件所有者而不是单元格本身时,通常会出现此错误。我没有犯这个错误,但它仍然给我这个错误。到目前为止,我已经删除了它有问题的标签,甚至完全删除了单元格的文件以便重新开始。任何帮助,将不胜感激。
宋细胞.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 的标头
#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;
}
界面生成器
注意:单元格标识符已在 IB 中设置为“SongCell”,文件所有者为 UITableViewController,因为多个表将使用此单元格。只要视图是一个表格,它就应该可以工作(过去有)。
更新: XML 格式的 xib 文件已粘贴到此处。