ios:UITableViewCell在故事板中与自定义单元格崩溃

时间:2012-11-13 10:27:07

标签: ios uitableview

我有一个包含两个自定义单元格的表,在尝试出列时会崩溃。

以下是代码:

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
}

另一个单元格是相同的

3 个答案:

答案 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 *)]