2012-03-15 11 views
8
私はstackoverflowの中で、ここでこのことについてではほぼすべての関連の質問を見て、すべての可能な解決策を試してみましたが、私はまだ私がなぜを取得把握することはできませんしました

このエラー:「CustomCell」@:カスタムUITableViewCellのサブクラス:このクラスは、キー値コーディングに準拠していない

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<CustomCell 0x6e627d0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key title.' 

私はnibnameとカスタマイズされたテーブルビューセルをロードしようとしています。そのクラスは "CustomCell"(ペン先名と同じクラス名)に割り当てられています。そのファイルの所有者もこのセルをロードするクラスに設定されています - "ProductsTableViewControllerWithSearch"。ペン先のすべての出口はCustomCell.m

にものに接続されている。ここに私のコードです:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellClassName = @"CustomCell"; 
    static NSString *CellIdentifier = @"Custom Items Cell"; 

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
    { 

     NSArray *topLevelItems = [[UINib nibWithNibName:CellClassName bundle:[NSBundle mainBundle]] instantiateWithOwner:self options:nil]; 
     cell = [topLevelItems objectAtIndex:0]; 

    } 
//... more irrelevant code here 
} 

誰かが私を助けてくださいことができます。私はこれを4時間以上働いています。どうもありがとう!

PS:私はARCを使用していますし、ここに私のCustomCell.hのイオス5

のために開発しています。

#import <UIKit/UIKit.h> 

@interface CustomCell : UITableViewCell{ 
    UILabel *textLabel; 
    UILabel *detailTextLabel; 
    UIButton *starButton; 
} 

@property (strong, nonatomic) IBOutlet UILabel *textLabel; 
@property (strong, nonatomic) IBOutlet UILabel *detailTextLabel; 
@property (strong, nonatomic) IBOutlet UIButton *starButton; 

@end 

あなたはCustomCellとCustomCellにセルのクラスを設定する必要がありますInterface Builderで

+0

CustomCellのサブクラスは何ですか走りますか? – JoePasq

+0

@JoePasq UITableViewCell。 – acecapades

答えて

10

プロパティtitleを持っている必要があります私のCustomCell.mには何もありません。

通常、クラスにプロパティが見つからず、Interface Builderがそのプロパティを使用しようとしているためクラッシュします。

+0

ええ、私はすでにCustomCellにCustomCell.xibのクラスを設定しています...だから私はCustomCell.mのすべてのUILabelsに接続できました。 – acecapades

+0

なぜ "title"というプロパティが必要なのでしょうか? – acecapades

+1

...わかりません。うーん。 「育った」ビューの場合、通常誰もがタイトルを持っています。いつどこで/テーブルビューのセルがタイトルを使用するのかわかりません。 – JoePasq

5

私はあなたの細胞は、実行時にNIBからロードされたときにこのエラーが発生したと仮定しています。カスタムセルのXIBビューに

ゴー(代わりに、それは神のためにコード行を削除し、あなたはが書いたコードのいくつかの行に壊しています!場合)、「ファイルの所有者」でCtrlクリックして、何でも解除そこには「タイトル」という接続があります。あなたがスパンキーな気分になれば、すべてのリンクを解除して、あなたが望むものを再リンクしてください。それがそれをクリアするかどうかを確認してください。もしそうでなければ、私は数時間ここにいます。あなたがそのビューに属していない任意のものをアップリンクする場合

+1

良い戦略 - 'title'プロパティ*が配線されているかどうかを確認してください。 – JoePasq

+0

これはほとんどの場合、このシナリオの原因です! – lnafziger

+0

セルがNIBランタイムからロードされています。ヘッダーファイルに 'title'というプロパティを宣言したときに動作しています。タイトルと呼ばれるプロパティを宣言しなければならないことは知らなかった。ありがとう@JoePasq。私はStackOverflowのここにあるこのすべての他の質問でそれを見ていない。 – acecapades

13

このエラーが発生します。この場合

、解決策は、Interface Builderで

  1. でまずNSObjectのにファイルの所有者のアイデンティティクラスを変更します。
  2. ファイルの所有者のすべてのIBOutletをリンク解除します。
  3. はCustomTableViewCellクラスの名前にカスタムニブのアイデンティティクラスを変更
  4. すべてのIBOutletをここにリンクしてください。

これだけです。 XCode6.0.1の私のケースでは

+0

あなたのViewControllerコードに直接nibを読み込んでいて、次のコードを書きたい場合。 'MyCustomCell * cell; cell.customTextField.text.delegate = self; 'これはあなたのために働くでしょう。また、他の現在の回答よりも理にかなっていると思います。 –

+7

CustomTablecellのUILabelsは、ファイルの所有者ではなく、UITableViewCellオブジェクトに接続する必要があります。私は毎回これを忘れる。なぜ私は分からない。 – user798719

+0

これはここで受け入れられる回答でなければなりません。少なくとも、それは私が持っていた問題を解決しました。 – Gereon

0

、私はプロジェクトをきれいにし、すべてがスムーズに

関連する問題