我正在尝试使用 XIB 文件创建 TableViewCell,但在执行时出现此错误:
2013-01-10 17:54:50.297 MainApp [6778:b603] * 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在包中加载 NIB:“NSBundle(已加载)”,名称为“DropDownCell”
*第一次抛出调用堆栈:
这就是我想要做的。
我有一个项目,第一个菜单。在这个项目/工作区中,我有我的第一个菜单的类。在这个项目中,我有另一个工作区,其中包含我的第二个菜单的类。我的意思是,这个工作区是为我的第一个菜单中选择的选项的 SubViewController 和类。在这个工作区中,我正在尝试使用来自苹果的演示创建一个 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 的 UITableViewCell 。
我有另一个 UITableViewController,它使用 DropDownCell XIB。这是方法:
-(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,我没有使用故事板。