加载不同的xib

时间:2013-11-08 09:12:54

标签: ios iphone objective-c xib

在我的应用程序中,我将加载2个不同的.xib:一个用于支持iPhone 4 / 4s的视网膜3.5显示,另一个用于支持iPhone 5 / 5c / 5s的视网膜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];
    }
}

我创建了2个xib:ScannerViewController和ScannerViewControllerRetina4。当我在带有视网膜3.5的模拟器上运行应用程序时,它可以工作,但是当我使用视网膜4运行应用程序时,它说:loaded the "ScannerViewControllerRetina4" nib but the view outlet was not set.我将2 xib文件的所有者与类ScannerViewController相关联 我的代码出了什么问题?我怎么解决它?

1 个答案:

答案 0 :(得分:1)

只需将UIViewController插座连接到主视图即可。您可以通过控制从ScannerViewControllerRetina4拖动到主视图来实现。