Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 加载不同的Nib文件_Iphone_Objective C_Ipad_Nib - Fatal编程技术网

Iphone 加载不同的Nib文件

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

我为iPhone和iPad创建了两个nib文件,因此我的应用程序将是通用的

我使用此方法检查它是否为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

加载nib文件到底要做什么?笔尖可以用于很多事情。这些NIB是否包含UIViewController的视图或其他对象图?您可以使用
NSBundle
UINib
类或
UIViewController
-initWithNibNamed:options:
方法加载nib。哪一个是合适的取决于nib包含的内容以及这些对象的用途。