仅在通用应用程序中为 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 应用程序