【问题标题】:iOS Universal App - Access different Nibs for iPad and iPhoneiOS 通用应用程序 - 访问适用于 iPad 和 iPhone 的不同 Nib
【发布时间】:2011-11-07 20:53:34
【问题描述】:

我正在编写我的第一个通用应用程序,我已经转换了我的笔尖,以便有 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 上运行时崩溃。 任何帮助都会非常感激

【问题讨论】:

  • 文件夹名称的答案是正确的,但你真的应该弄清楚它崩溃的地方,并注意到 infoViewController 是 nil。然后试图弄清楚。

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


【解决方案1】:

iPad版不需要将文件夹名称放在笔尖名称中,只要与iPhone版名称不同就会被找到。

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

【讨论】:

  • 你是对的,不需要文件夹名称。但是由于某种原因,我还必须从项目中删除 InfoViewController-iPad(仅供参考),然后将其添加回来。
【解决方案2】:

您不需要在 iPad 笔尖名称上添加 Resources-iPad/ 前缀。 iOS 知道如何在包中查找资源。您在 Xcode 中看到的文件夹层次结构只是为了组织文件和为开发人员谋福利。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 2014-09-07
    相关资源
    最近更新 更多