XIB ファイルを使用して TableViewCell を作成しようとしていますが、実行時に次のエラーが発生します。
2013-01-10 17:54:50.297 MainApp[6778:b603] *キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。
最初のスローでスタックを呼び出す:
これが私がやろうとしていることです。
最初のメニューを持つプロジェクトがあります。このプロジェクト/ワークスペースには、最初のメニューのクラスがあります。このプロジェクト内には、2 番目のメニュー用のクラスを含む別のワークスペースがあります。つまり、このワークスペースは、最初のメニューで選択したオプションの SubViewController とクラス用です。このワークスペースで、Apple のデモを使用して DropDownMenu を作成しようとしていますが、アプリがクラッシュします。このデモでは、XIB ファイルを使用してテーブルにセルを作成します。
これは DropDownCell クラスです:
DropDownCell.h
#import <UIKit/UIKit.h>
@interface DropDownCell : UITableViewCell{
IBOutlet UILabel *textLabel;
IBOutlet UIImageView *arrow_up;
IBOutlet UIImageView *arrow_down;
BOOL isOpen;
}
-(void)setOpen;
-(void)setClosed;
@property (nonatomic)BOOL isOpen;
@property (nonatomic,retain) IBOutlet UILabel *textLabel;
@property (nonatomic,retain) IBOutlet UIImageView *arrow_up;
@property (nonatomic,retain) IBOutlet UIImageView *arrow_down;
@end
DropDownCell.m #import "DropDownCell.h"
@implementation DropDownCell
@synthesize textLabel, arrow_up, arrow_down, isOpen;
-(void)setOpen{
[arrow_down setHidden:YES];
[arrow_up setHidden:NO];
[self setIsOpen:YES];
}
-(void)setClosed{
[arrow_down setHidden:NO];
[arrow_up setHidden:YES];
[self setIsOpen:NO];
}
-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if(self){
}
return self;
}
-(void)setSelected:(BOOL)selected animated:(BOOL)animated{
[super setSelected:selected animated:animated];
}
-(void)dealloc{
[super dealloc];
}
@end
また、DropDownCell.xibには、UILabel を持つ 1 つの UITableViewCell があります。
DropDownCell XIB を使用する別の UITableViewController があります。これは方法です:
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"MenuCell";
static NSString *DropDownCellIdentifier = @"DropDownCell";
if([indexPath row] == 0){
DropDownCell *cell = (DropDownCell*)[tableView dequeueReusableCellWithIdentifier:DropDownCellIdentifier];
if(cell == nil){
NSArray *topLevelObjects = [[NSBundle mainBundle]loadNibNamed:@"DropDownCell" owner:self options:nil];
for(id currentObject in topLevelObjects){
if([currentObject isKindOfClass:[DropDownCell class]]){
cell = (DropDownCell*)currentObject;
break;
}
}
}
[[cell textLabel] setText:@"Option 1"];
return cell;
}
しかし、NIB ファイルをロードするとアプリがクラッシュします... 理由は何ですか? Xcode 4.3 を使用していますが、ストーリーボードは使用していません。