将应用程序发送到应用程序商店时,info.plist - UIMainStoryboardFile或NSMainNibFile无效

问题描述 投票:11回答:6

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

"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来操纵。

有没有人有任何关于如何解决/修复此问题的提示,以便应用程序发送?

谢谢堆!

xcode submission
6个回答
8
投票

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

我试图在iOS 7中将仅限iPhone的项目转换为Universal,但它无法正常工作。 iPad的故事板没有被阅读。

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


7
投票

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

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


3
投票

检查info - > custom IOS target properties

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

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

这个对我有用。


2
投票

这是帮助我解决这个问题的原因。删除NIB条目,只保留其他条目。

enter image description here


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;
}

0
投票

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

这是分辨率打开Info.plist文件 - >删除'主nib文件基本名称(iPad)'并添加另一个名为'主故事板文件基本名称(iPad)'的键,并为其分配iPad故事板文件的名称,即Main_iPad don不提供延期。

© www.soinside.com 2019 - 2024. All rights reserved.