加载不同的xib

Posted

技术标签:

【中文标题】加载不同的xib【英文标题】:Load different xib 【发布时间】:2013-11-08 09:12:53 【问题描述】:

在我的应用程序中,我必须加载 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】:

只需将您的UIViewController 插座连接到您的主视图。您可以通过控制从 ScannerViewControllerRetina4 拖动到主视图来做到这一点。

【讨论】:

以上是关于加载不同的xib的主要内容,如果未能解决你的问题,请参考以下文章

为 iPhone 5 加载不同的 xib 失败

通用应用加载不同的视图

UITableViewCell 为不同的方向和单元格类型加载自定义 XIB

自定义 UITableViewCell 打开不同的 xib 子视图

如何用不同的 Xib 替换我的自定义视图

应用程序中未加载 XIB 以进行本地化?