iOS通用应用程序 - 为iPad和iPhone访问不同的Nib

时间:2011-11-07 20:53:34

标签: iphone objective-c ios ipad universal-binary

我正在编写我的第一个通用应用程序,我已经转换了我的笔尖,以便有iPad和iPhone版本。

iPad版本位于Resources-iPad文件夹中,名为“InfoViewController-iPad.xib”。主文件夹中的iPhone版本,名为“InfoViewController.xib”

我有以下操作来显示相关的xib

-(void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event {
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
         infoViewController = [[InfoViewController alloc] initWithNibName:@"Resources-iPad/InfoViewController-iPad" bundle:nil];
    }
    else
    {
        infoViewController = [[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle:nil];
    }

    infoViewController.delegate = self;
    infoViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

    [self presentModalViewController:infoViewController animated:YES];

    [infoViewController release];

}

当它在iPhone上运行时它工作正常,但在iPad上运行时会崩溃。 任何帮助都会非常值得赞赏

2 个答案:

答案 0 :(得分:1)

您不需要将文件夹名称放在iPad版本的笔尖名称中,只要它的名称与iPhone版本不同,就可以找到它。

如果从initWithNibName中删除该文件夹不适合您,请编辑您的问题并从控制台发布回溯的结果。

答案 1 :(得分:0)

您不应该在iPad笔尖的名称上使用Resources-iPad/前缀。 iOS知道如何在捆绑中查找资源。您在Xcode中看到的文件夹层次结构仅用于组织文件和开发人员的利益。