我有一个包含两个自定义单元格的表,在尝试出列时会崩溃。
以下是代码:
int row = indexPath.row;
static NSString *CellIdentifier;
UITableViewCell* cell;
PoetCell * poetCell;
PoemsCell * poemsCell;
if(row == 0) {
CellIdentifier = @"PoetCell";
} else {
CellIdentifier = @"poemsCell";
}
if(row == 0) {
poetCell= [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
poetCell.image.image=[UIImage imageWithData:imageData];
if([imageData length]==0){
poetCell.image.hidden=TRUE;
poetCell.Name.frame=CGRectMake(124, poetCell.Name.frame.origin.y, poetCell.Name.frame.size.width, poetCell.Name.frame.size.height);
} else {
poetCell.Name.frame=CGRectMake(38, poetCell.Name.frame.origin.y, poetCell.Name.frame.size.width, poetCell.Name.frame.size.height);
}
poetCell.desc.text=pdesc;
poetCell.Name.text=pName;
} else {
poemsCell= [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if([poemsNames count]) {
poemsCell.poemText.text=[poemsNames objectAtIndex:row-1];
}
}
它在行上出错:
poetCell= [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
说
[UITableViewCell setValue:forUndefinedKey:]:此类与密钥名称不符合密钥值编码。
我知道当笔尖中有一个错误的链接时会出现这个错误。但事实并非如此,我相信它是在代码中..所以任何人都可以得到问题所在吗?
编辑
我认为整个问题是poetCell和poemsCell的初始化,这就是代码
#import <UIKit/UIKit.h>
@interface PoetCell : UITableViewCell
{
IBOutlet UILabel*Name;
IBOutlet UILabel*desc;
IBOutlet UIImageView*image;
}
@property(nonatomic,retain)IBOutlet UILabel*Name;
@property(nonatomic,retain)IBOutlet UILabel*desc;
@property(nonatomic,retain)IBOutlet UIImageView*image;
@end
#import "PoetCell.h"
@implementation PoetCell
@synthesize Name,desc,image;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
另一个单元格是相同的
答案 0 :(得分:0)
您的代码可能有问题!如果数组没有请求的索引?
只需像这样进行检查
if([poemsNames count] > row ){
poemsCell.poemText.text=[poemsNames objectAtIndex:row-1];
}
答案 1 :(得分:0)
您正在使用poetCell.Name
。您能否确保您的自定义单元格具有“名称”属性(在您的自定义单元格中.h / .m)?我认为问题来自这里。
顺便说一下,如果您的自定义单元格确实具有此属性,则应将其更改为name
而不是Name
。开头用大写字母的变量用于类名。变量应始终以小写字母开头。
您也应该发布自定义单元格的代码。
编辑:
如下所示:Class is not key value coding-compliant
在界面构建器中,您应该从文件所有者链接您的IBOutlet,当您应该从单元格视图链接它们时。
你能检查一下吗?
答案 2 :(得分:0)
假设您的目标是iOS5 +,您是否在viewDidLoad中包含了以下内容:
[self.tableView registerNib:[UINib nibWithNibName:kStandardCellIdentifier bundle:nil] forCellReuseIdentifier:(NSString *)]