更新:私はまだこのアプリの初期段階だったので、最初からやり直すことにしました。私はすべてを繰り返しましたが、何らかの理由で、カスタムセルは2回目になりました。この問題を抱えているのは私だけではないと思うので、別の答えを確認するために古いファイルを保管しておきます。
テーブルビューにカスタムセルを必要とするタブ付きアプリケーションを構築しています。私はこれを数回行いましたが、これらのカスタムセルを接続すると、常にスピードバンプにぶつかるようです。テーブルビューコントローラーでSongsTVCという名前のカスタムセルを使い始めるまで、アプリは正常に起動しました。次の理由で終了を受け取りました。
[<SongsTVC 0x6831330> setValue:forUndefinedKey:]:
this class is not key value coding-compliant for the key albumLabel.
私はこのチュートリアルを使用しており、以前に使用したことがあり(ARCおよびiOS 5のいくつかの変更点)、成功しています。実際、私が使用しているコードとIBレイアウトは、すでに機能しているプロジェクトに基づいています。セル自体ではなくファイルの所有者にアウトレットを接続すると、このエラーが一般的に発生することを認識しています。私はこの間違いを犯していませんが、それでも私にこのエラーを与えています。これまでのところ、問題のあるラベルを削除し、最初からやり直すためにセルのファイルを完全に削除しました。どんな助けでもいただければ幸いです。
SongCell.h
#import <UIKit/UIKit.h>
@interface SongCell : UITableViewCell{
}
@property(nonatomic, assign) IBOutlet UILabel *titleLabel;
@property(nonatomic, assign) IBOutlet UILabel *artistLabel;
@property(nonatomic, assign) IBOutlet UILabel *albumLabel;
@end
SongCell.m
#import "SongCell.h"
@interface SongCell ()
@end
@implementation SongCell
@synthesize titleLabel, artistLabel, albumLabel;
@end
SongsTVC.h-TableViewControllerのヘッダー
#import <UIKit/UIKit.h>
@interface SongsTVC : UITableViewController{
UINib *cellLoader;
}
@end
SongsTVC.m-関連するTableViewControllerメソッド
#import "SongsTVC.h"
#import "SongCell.h"
@interface SongsTVC ()
@end
static NSString *CellClassName = @"SongCell";
@implementation SongsTVC
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
cellLoader = [UINib nibWithNibName:CellClassName bundle:[NSBundle mainBundle]];
}
return self;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
SongCell *cell = (SongCell *)[tableView dequeueReusableCellWithIdentifier:CellClassName];
if (!cell)
{
//CRASH ERROR POINTS HERE
NSArray *topLevelItems = [cellLoader instantiateWithOwner:self options:nil];
cell = [topLevelItems objectAtIndex:0];
}
// Configure the cell...
cell.titleLabel.text = @"SONG";
cell.artistLabel.text = @"Artist";
cell.albumLabel.text = @"Album";
return cell;
}
InterfaceBuilder
注:セル識別子はIBで「SongCell」に設定されており、複数のテーブルがこのセルを使用するため、ファイルの所有者はUITableViewControllerです。ビューがテーブルである限り、機能するはずです(過去に使用されていました)。
更新:XML形式のxibファイルがここに貼り付けられました。