我有一个 UINavigationBar 类的子类。在 viewDidLoad 我有:
- (void)viewDidLoad
{
[super viewDidLoad];
UINavigationBar *bar = [[UINavigationBar alloc] init];
NSString* path = [[NSBundle mainBundle] pathForResource:@"topbanner" ofType:@"png" inDirectory:@"assets"];
NSData *data = [NSData dataWithContentsOfFile:path];
UIImage *image = [UIImage imageWithData:data];
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; //crash here!
[self.view addSubview:bar];
}
我从我的 tableView 中调用它。当我在模拟器上运行时一切都很好,当我尝试在设备应用程序崩溃时运行。我有一个错误:
+[UINavigationBar appearance]: unrecognized selector sent to class 0x3e3fe490
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[UINavigationBar appearance]: unrecognized selector sent to class 0x3e3fe490'
为什么?
编辑:我在 Xcode 的蓝色目录文件夹中有我的 topbanner 文件。在模拟器中一切看起来都很好。
EDIT2:当然,当我在我的设备中删除这行代码时,我的应用看起来不错,但导航栏(oc)上没有图像。