Iphone 加载不同的Nib文件
我为iPhone和iPad创建了两个nib文件,因此我的应用程序将是通用的 我使用此方法检查它是否为iPad:Iphone 加载不同的Nib文件,iphone,objective-c,ipad,nib,Iphone,Objective C,Ipad,Nib,我为iPhone和iPad创建了两个nib文件,因此我的应用程序将是通用的 我使用此方法检查它是否为iPad: if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 但我不知道如何加载正确的笔尖时,它知道它是 有人知道加载到nib文件的正确方法吗?您的接口文件应该以不同的方式命名,这样就可以了 UIViewController *someViewController = nil; if (UI_USER_INTERFACE_IDIO
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
加载nib文件到底要做什么?笔尖可以用于很多事情。这些NIB是否包含UIViewController的视图或其他对象图?您可以使用NSBundle
或UINib
类或UIViewController
的-initWithNibNamed:options:
方法加载nib。哪一个是合适的取决于nib包含的内容以及这些对象的用途。