1

デキューしようとするとクラッシュする 2 つのカスタム セルを含むテーブルがあります。

コードは次のとおりです。

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:]: このクラスは、キー Name のキー値コーディングに準拠していません。

このエラーは、ペン先に不良リンクがある場合に発生することを知っています..しかし、それはコードにあると私が信じているケースではありません..だから、誰でも問題が何であるかを理解できますか?

編集済み

全体の問題は、コードである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
}

他のセルはまったく同じです

4

3 に答える 3

0

コードに問題がある可能性があります。配列に要求されたインデックスがない場合ですか?

このようにチェックしてください

    if([poemsNames count] > row  ){
        poemsCell.poemText.text=[poemsNames objectAtIndex:row-1];
    } 
于 2012-11-13T10:35:56.397 に答える
0

を使用してpoetCell.Nameいます。カスタム セルに「Name」プロパティがあることを確認できますか (カスタム セルの .h/.m 内)。問題はここからだと思います。

ところで、カスタム セルにこのプロパティがある場合は、name代わりに に変更する必要がありNameます。先頭が大文字の変数は、クラス名用です。変数は常に小文字で始める必要があります。

カスタムセルのコードも投稿する必要があります。


編集 :

ここに見られるように:クラスはキー値のコーディングに準拠していません

インターフェイス ビルダーでは、セル ビューから IBOutlets をリンクする必要があるときに、ファイルの所有者から IBOutlets をリンクしました。

それを確認できますか?

于 2012-11-13T10:50:40.307 に答える
0

iOS5以降を対象としていると仮定すると、viewDidLoadに次のようなものを含めましたか:

[self.tableView registerNib:[UINib nibWithNibName:kStandardCellIdentifier bundle:nil] forCellReuseIdentifier:(NSString *)]
于 2012-11-15T00:07:35.260 に答える