我爲iPhone和iPad創建了兩個筆尖文件,所以我的應用程序將是通用的。加載不同的筆尖文件
我用這個方法來檢查它是否是一個iPad:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
,但我不知道如何當它知道它是加載正確的筆尖。
有誰知道加載到nib文件的正確方法嗎?
我爲iPhone和iPad創建了兩個筆尖文件,所以我的應用程序將是通用的。加載不同的筆尖文件
我用這個方法來檢查它是否是一個iPad:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
,但我不知道如何當它知道它是加載正確的筆尖。
有誰知道加載到nib文件的正確方法嗎?
你的界面文件應該有不同的命名,所以應該這樣。
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];
}
您應該使用初始化程序-[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;
}
事實上,蘋果這一切都是自動,只是命名您的NIB文件:
MyViewController~iphone.xib // iPhone
MyViewController~ipad.xib // iPad
,並用代碼量最小加載您的視圖控制器:
[[MyViewController alloc] initWithNibName:nil bundle:nil]; // Apple will take care of everything
這是正確的,不介意倒票;)+1 – Joe 2014-07-01 13:56:14
加載一個nib文件來做什麼?筆尖可以用於很多事情。這些筆尖是否包含UIViewController的視圖或其他對象圖?您可以使用'NSBundle'或'UINib'類或'UIViewController'''-initWithNibNamed:options:'方法加載一個nib。哪一個是合適的取決於筆尖包含的內容以及您使用這些對象的方式。 – Jonah 2011-06-08 14:36:05