まず、このディスカッションは私の問題を解決しませんでした。カスタムUITableViewCellが私に教えてくれます:このクラスはコードに準拠したキー値ではありません
Custom UITableViewCell subclass: This class is not a key value coding-compliant
セットアップ:
私はMainViewController
におけるPersonオブジェクトの配列を持っています。 UITableView
のオブジェクトをAllContactsViewController
に表示する。
問題:
すべての作品デフォルトUITableViewCell
を使用すると、期待どおり。 TableCell
のカスタムを使用すると、 というエラーが表示され、このクラスはキー値のコーディングに対応していません。
このエラーは、私のoutlets
のいずれかをIB
に接続した直後に、TableCell
クラスに発生します。
注:name
& email
ラベル+ imageView
:
TableCell
は、3つのプロパティがあります。
希望すると助かります。
TableCell.h
#import <UIKit/UIKit.h>
@interface TableCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (weak, nonatomic) IBOutlet UILabel *emailLabel;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
TableCell.m
#import "TableCell.h"
@implementation TableCell
@synthesize nameLabel, imageView, emailLabel;
AllContactsViewController.m
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdent = @"TableCell";
TableCell *cell = (TableCell *)[tableView dequeueReusableCellWithIdentifier:cellIdent];
if (cell == nil) {
NSArray *array = [[NSBundle mainBundle]loadNibNamed:@"TableCell" owner:self options:nil];
cell = [array objectAtIndex:0];
}
NSString *firstAndLastnameString =
[NSString stringWithFormat:@"%@ %@",
[(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] firstName],
[(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] lastName]];
cell.nameLabel.text = firstAndLastnameString;
cell.emailLabel.text =
[(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] eMail];
cell.imageView.image =
[(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] contactPicture];
return cell;
}
U PDATE:
多分、IBからのスクリーンショットが役立つでしょう。フルAllContactsViewControllerを追加しました
。時間
#import <UIKit/UIKit.h>
#import "VCDelegate.h"
#import "TableCell.h"
@interface AllContactsViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (weak, nonatomic) id <VCDelegate>delegate;
@property (weak, nonatomic) IBOutlet UITableView *allContactsTableView;
@property (strong, nonatomic) NSMutableArray *allContactsArray;
@property (assign) int currentArrayIndexNumber;
- (IBAction)closeBtnTapped:(id)sender;
@end
どのキーに対応していないのですか?正確なエラーメッセージを出してください。 - 'cell = [array objectAtIndex:0]'が実際にあなたの 'TableCell'クラスのインスタンスを返すことを確認しましたか? –
「出口」に依存してIBに接続します。私は 'name'の' label'を接続し、アプリケーションがクラッシュし、アプリがクラッシュする代わりに 'imageView'を接続します。私は 'TableCell'で宣言したすべてのプロパティに問題があるようですが、私は 'TableCell'のインスタンスを取得しているはずです。そうでなければエラーは' TableCell'にあるコンセントにエラーがあるので、エラーメッセージ: '[ setValue:forUndefinedKey:]:このクラスはキーimageViewのキー値コーディングに準拠していません。 ' –
エラーメッセージは' AllContactsViewController'を指しています!チェックするコードに 'NSLog(@" class =%@ "、[cell class]);'を追加してください。 –