1

私のアプリでは、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 。どうすれば修正できますか?

4

1 に答える 1