加载不同的Nib文件

时间:2011-06-08 14:31:29

标签: iphone objective-c ipad nib

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

我使用此方法检查它是否是iPad:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

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

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

3 个答案:

答案 0 :(得分:1)

实际上,Apple会自动完成所有这些操作,只需命名您的NIB文件:

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

并使用最少量的代码加载视图控制器:

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

答案 1 :(得分: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];
}

答案 2 :(得分: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;
}