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 の両方で実行するように設計されており、アプリには 2 つのストーリーボード ファイルが含まれています。1 つは iPad 用、もう 1 つは iPhone 用です。正しい答えが見つかったとしても、操作する可視の .nib または .xib が見つかりません。

アプリが送信するように、これを回避/修正する方法についてのヒントはありますか?

ありがとうございます!

4

8 に答える 8

1

Xcode 11 の時点でInfo-> Custom iOS Target Properties->に移動しMain nib file base name (iPad)、このキーの値を空のままにします。また、General-> Deployment Info->Main interfaceあなたの値は空でなければなりません。

于 2019-10-17T19:15:25.447 に答える
1

問題がある方のために、新しいキーを作成せずに、既存のキーから (iPad) を削除しただけで解決しました

メイン インターフェイスで、ストーリーボードを選択し、保存し、プロジェクトをクリーンアップして出来上がり

于 2019-07-08T19:59:48.663 に答える
0

デフォルトでは、Xcode は info.plist ファイルに「メイン nib ファイル ベース名 (iPad)」を作成し、iPad ストーリーボードの名前を割り当てます。

これが解決策です Info.plistファイルを開く->「メインnibファイルベース名(iPad)」を削除し、「メインストーリーボードファイルベース名(iPad)」という名前の別のキーを追加し、iPadストーリーボードファイルの名前、つまりMain_iPadドンを割り当てます延長はできません。

于 2014-12-02T11:07:55.633 に答える
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 に答える