仅在通用应用程序中为 iPhone 执行 loadView

Posted

技术标签:

【中文标题】仅在通用应用程序中为 iPhone 执行 loadView【英文标题】:Execute loadView for iPhone only in Universal application 【发布时间】:2013-12-02 08:48:16 【问题描述】:

我目前正在将 iPhone 应用程序移植到 iPad 应用程序。现在,在 iPhone 应用程序的几个屏幕中,所有 UI 都是通过使用 Visual Format Language 的代码完成的。现在在 iPad 中,由于 UI 不同,我可以简单地通过 Interface Builder 来完成。现在我的应用程序如何只为 iPhone 应用程序而不是 iPad 执行 loadView?

我尝试了以下选项

#define IS_IPHONE UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone

#ifndef IS_IPHONE
- (void)loadView

    self.myView = [[MyCustomView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.view = self.myView;

#endif

- (void)viewDidLoad

    // my other code 

但是对于 iPhone,loadView 没有被调用。直接执行 viewDidLoad 方法。

谁能告诉我怎样才能做到这一点?提前致谢。

【问题讨论】:

【参考方案1】:

你可以这样做:

#define IS_IPHONE UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone   

- (void)loadView 
    if (IS_IPHONE)
    
        self.myView = [[MyCustomView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        self.view = self.myView;
    
    else 
        //other code
    

【讨论】:

如果我在 else 条件下添加我的代码,即在 self.view 中添加 MyCustomView ,应用程序将无限循环运行并崩溃

以上是关于仅在通用应用程序中为 iPhone 执行 loadView的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中为通用应用程序添加新的两个 XIB 文件?

iPhone/iPad - 只将通用打入 iPhone 应用程序

iphone, ipad, 通用应用设计, 基于拆分视图

我们能否仅在 iPad 1 上限制通用应用程序的下载或启动?

如何在 xcode4 中为 iphone 分配默认横向图像

iPhone 应用程序仅在 3G 上的发布模式下崩溃