15

在将应用程序发送到应用程序商店时,我收到一条消息,说明:

"Invalid info.plist: the info.plist may contain either UIMainStoryboardFile or NSMainNibFile, but must not contain both keys"

在谷歌搜索之后,似乎共识是将“主 nib 文件基本名称”设置为“ MainWindow”,并将“主情节提要文件基本名称”设置为“ MainStoryboard_iPAd”。我们已经拥有这两种选择。

该应用程序设计为在 iPad 和 iPhone 上运行,该应用程序包含两个故事板文件,一个用于 ipad,一个用于 iphone。即使我找到了正确的答案,我也找不到任何可见的 .nib 或 .xib 来操作。

是否有人对如何解决/修复此问题有任何提示,以便应用程序发送?

多谢!

4

8 回答 8

8

这是帮助我解决此问题的方法。删除 NIB 条目,只留下另一个条目。

在此处输入图像描述

于 2018-06-25T03:50:18.847 回答
7

不幸的是,@verbumdei 的回答对我不起作用。

我试图在 iOS 7 中将一个仅限 iPhone 的项目转换为 Universal,但它不起作用。iPad的故事板没有被阅读。

发生的事情是 Xcode 在我的 .plist 中添加了一个键,即“主 nib 文件基本名称 (iPad)”。我必须删除该键并添加“主故事板文件基本名称(iPad)”,然后将文件名设置为我的故事板(即 Storyboard-iPad.storyboard)。

于 2013-10-16T04:59:24.503 回答
6

正如消息所示,您不应在 Info.plist 文件中同时设置 UIMainStorboardFile 和 NSMainNibFile 。我建议您删除 NSMainNibFile 条目。

由于您有两个故事板,一个用于 iPad,一个用于 iPhone,您可以在项目的“摘要”选项卡中将它们分别设置为主故事板

在此处输入图像描述

于 2013-06-19T03:32:21.473 回答
4

检查info->custom IOS target properties

检查Main nib file base name(iPhone/iPad)Main Storyboard file base name(iPhone/iPad)

如果不存在,请添加它们并写下您的基本文件名。

这个对我有用。

于 2014-01-03T12:58:18.900 回答
1

对于那些有问题的人,我没有创建新密钥就解决了,只是从现有密钥中删除了(iPad)

在主界面中,我选择了故事板,保存,清理了项目,瞧

于 2019-07-08T19:59:48.663 回答
1

从 Xcode 11 开始,转到Info-> Custom iOS Target Properties-> Find Main nib file base name (iPad)and leave value for this key empty。此外,在General-> Deployment Info->Main interface你的值应该是空的。

于 2019-10-17T19:15:25.447 回答
0

以上解决方案都不适合我。
因此我所做的是我添加了一个storyboard属性AppDelegate并在下面设置它的值- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
是这个的代码:
AppDelegate.h

@property (strong, nonatomic) UIStoryboard* storyboard;  

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { // is iPad
        self.storyboard = [UIStoryboard storyboardWithName:@"Storyboard_ipad" bundle:Nil];
    } else {
        self.storyboard = [UIStoryboard storyboardWithName:@"Storyboard_iphone" bundle:Nil];
    }

    self.window.rootViewController = [self.storyboard instantiateInitialViewController];

    [self.window makeKeyAndVisible];

    return YES;
}
于 2014-02-01T10:23:07.120 回答
0

默认情况下,Xcode 在 info.plist 文件中创建“Main nib file base name (iPad)”,并为其分配 iPad 故事板的名称。

这是解决方法打开 Info.plist 文件-> 删除“主 nib 文件基本名称(iPad)”并添加另一个名为“主故事板文件基本名称(iPad)”的键,并为其分配 iPad 故事板文件的名称,即 Main_iPad don '不提供扩展。

于 2014-12-02T11:07:55.633 回答