2011-06-08 89 views
0

我为iPhone和iPad创建了两个笔尖文件,所以我的应用程序将是通用的。加载不同的笔尖文件

我用这个方法来检查它是否是一个iPad:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 

,但我不知道如何当它知道它是加载正确的笔尖。

有谁知道加载到nib文件的正确方法吗?

+0

加载一个nib文件来做什么?笔尖可以用于很多事情。这些笔尖是否包含UIViewController的视图或其他对象图?您可以使用'NSBundle'或'UINib'类或'UIViewController'''-initWithNibNamed:options:'方法加载一个nib。哪一个是合适的取决于笔尖包含的内容以及您使用这些对象的方式。 – Jonah 2011-06-08 14:36:05

回答

0

你的界面文件应该有不同的命名,所以应该这样。

UIViewController *someViewController = nil; 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{ 
    someViewController = [[UIViewController alloc] initWithNibName:@"SomeView_iPad" bundle:nil]; 
} 
else 
{ 
    someViewController = [[UIViewController alloc] initWithNibName:@"SomeView" bundle:nil]; 
} 
0

您应该使用初始化程序-[UIViewController initWithNibNamed:bundle:];。 在你SomeViewController.m:

- (id)init { 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
     if (nil != (self = [super initWithNibName:@"SomeViewControllerIPad"])) { 
      [self setup]; 
     } 
    } else { 
     if (nil != (self = [super initWithNibName:@"SomeViewControllerIPhone"])) { 
      [self setup]; 
     } 
    } 
    return self; 
} 
1

事实上,苹果这一切都是自动,只是命名您的NIB文件:

MyViewController~iphone.xib // iPhone 
MyViewController~ipad.xib // iPad 

,并用代码量最小加载您的视图控制器:

[[MyViewController alloc] initWithNibName:nil bundle:nil]; // Apple will take care of everything 
+0

这是正确的,不介意倒票;)+1 – Joe 2014-07-01 13:56:14