私のアプリでは、2 つの異なる .xib をロードする必要があります。1 つは iPhone 4/4s の Retina 3.5 ディスプレイをサポートするためのもので、もう 1 つは iPhone 5/5c/5s の Retina 4 ディスプレイをサポートするためのものです。私はこれをそうしました:最初に私はこの方法で定数を定義しました:
#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
そして、このメソッドを作成して、さまざまな xib ファイルをロードしました。
- (IBAction)callViewController:(UIButton *)sender {
if (IS_IPHONE_5) {
ScannerViewController *scannerVC = [[ScannerViewController alloc]initWithNibName:@"ScannerViewControllerRetina4" bundle:nil];
[scannerVC setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentViewController:scannerVC animated:YES completion:nil];
} else {
ScannerViewController *scannerVC = [[ScannerViewController alloc]initWithNibName:@"ScannerViewController" bundle:nil];
[scannerVC setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentViewController:scannerVC animated:YES completion:nil];
}
}
ScannerViewController と ScannerViewControllerRetina4 の 2 つの xib を作成しました。Retina 3.5 を使用してシミュレーターでアプリを実行すると動作しますが、Retina 4 でアプリを実行すると、次のように表示されます: loaded the "ScannerViewControllerRetina4" nib but the view outlet was not set.
2 xib ファイルの所有者をクラスに関連付けましたScannerViewController
。どうすれば修正できますか?