在向应用商店发送应用时,我收到一条消息,说明:
"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来操纵。
有没有人对如何解决/解决此问题有任何提示,以便应用程序发送?
谢谢堆!
答案 0 :(得分:8)
不幸的是,@ verbumdei的回答对我不起作用。
我试图在iOS 7中将仅限iPhone的项目转换为Universal,但它无法正常工作。 iPad的故事板没有被阅读。
Xcode为我的.plist添加了一个“主nib文件基本名称(iPad)”的密钥。我不得不删除该密钥并添加“主故事板文件基本名称(iPad)”,然后将文件名设置为我的故事板(即Storyboard-iPad.storyboard)。
答案 1 :(得分:7)
如消息所示,您不应该在Info.plist文件中设置UIMainStorboardFile和NSMainNibFile。我建议您删除NSMainNibFile条目。
由于您有两个故事板,一个用于iPad,一个用于iPhone,您可以在项目的摘要标签中分别将它们设置为主要故事板: / p>
答案 2 :(得分:3)
检查info
- > custom IOS target properties
检查Main nib file base name(iPhone/iPad)
或Main Storyboard file base name(iPhone/iPad)
如果不存在,请添加它们并写入基本文件名。
它对我有用。
答案 3 :(得分:2)
答案 4 :(得分: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;
}
答案 5 :(得分:0)
默认情况下,Xcode在info.plist文件中创建“主nib文件基本名称(iPad)”,并为其分配iPad故事板的名称。
这是决议 打开Info.plist文件 - >删除“主nib文件基本名称(iPad)”并添加另一个名为“主故事板文件基本名称(iPad)”的键,并为其分配iPad故事板文件的名称,即Main_iPad不提供扩展名。
答案 6 :(得分:0)
对于那些有问题的人,我无需创建新密钥即可解决,只需从现有密钥中删除(iPad)
在主界面中,我选择了Storyboard,保存,清理了项目并检查了结果
答案 7 :(得分:0)
从Xcode 11开始,转到Info
-> Custom iOS Target Properties
->查找Main nib file base name (iPad)
,然后将此键的值保留为空。另外,在General
-> Deployment Info
-> Main interface
中,您的值应该为空。