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の青いディレクトリフォルダにあるトップバナーファイル。エミュレーターでは、すべてが正常に見えます。
EDIT2:もちろん、デバイスでこのコード行を削除すると、アプリは見栄えがしますが、ナビゲーションバー(oc)に画像が表示されません。