2011-06-08 86 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