0

iPhone、iPhone 5、iPad 用の 3 つのストーリーボードを含むアプリがあります。2 iPhone の絵コンテ?いくつかの明白な理由により、私はただこの道を進みたいだけです。すべてが正常に機能していました。didFinishLaunchingWithOptions で、画面サイズに応じてストーリーボードを手動でロードしました。次に、ターゲットを複製し、別の製品の名前に変更しました。現在、3.5 インチのデバイスでアプリを実行しようとすると、それぞれのストーリーボードが読み込まれません。

「キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: 'バンドル NSBundle (ロード済み) に 'iPhone.storyboard' という名前のストーリーボードが見つかりませんでした'」正しい。このアプリは、iPhone 5 および iPad 用の Storyboard を適切に読み込んでいます。展開情報と情報。リストには、1) iPhone 用と iPad 用の 2 つのストーリーボード エントリのみを含めることができます。3 番目のストーリーボードを plist に追加するにはどうすればよいですか。

私はObjective-Cが初めてなので、親切にしてください!

正確なエラー メッセージは 2013-07-15 11:20:34.423 AppName[1907:c07] * キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: 'Could not find a storyboard name'iPhone4.storyboard' in bundle NSBundle ( loaded)' * First throw call stack: (0x27a5012 0x25cae7e 0x1955f96 0x2f9f 0x2a29 0x150c157 0x150c747 0x150d94b 0x151ecb5 0x151fbeb 0x1511698 0x3202df9 0x3202ad0 0x271abf5 0x271a962 0x274bbb6 0x274af44 0x274ae1b 0x150d17a 0x150effc 0x277d 0x26a5) libc++abi.dylib: terminate called throwing an exception

ここでストーリーボードを読み込んでいます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

    if (iOSDeviceScreenSize.height == 480)
    {

        UIStoryboard *iPhone4Storyboard = [UIStoryboard storyboardWithName:@"iPhone4.storyboard" bundle:[NSBundle mainBundle]];
        UIViewController *initialViewController = [iPhone4Storyboard instantiateInitialViewController];
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        self.window.rootViewController  = initialViewController;
        [self.window makeKeyAndVisible];
    }

    else if (iOSDeviceScreenSize.height == 568)
    {
        UIStoryboard *iPhone5Storyboard = [UIStoryboard storyboardWithName:@"iPhone5.storyboard" bundle:[NSBundle mainBundle]];
        UIViewController *initialViewController = [iPhone5Storyboard instantiateInitialViewController];
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        self.window.rootViewController  = initialViewController;
        [self.window makeKeyAndVisible];
    }

    else if (iOSDeviceScreenSize.height == 1024)
    {
        UIStoryboard *iPadStoryboard = [UIStoryboard storyboardWithName:@"iPad.storyboard" bundle:[NSBundle mainBundle]];
        UIViewController *initialViewController = [iPadStoryboard instantiateInitialViewController];
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        self.window.rootViewController  = initialViewController;
        [self.window makeKeyAndVisible];
    }

    return YES;
}
4

1 に答える 1

0

バンドルなしではなく、メイン バンドルにアクセスする必要があります。ストーリーボードのインスタンス化は次のようになります。

UIStoryboard *iPhone4Storyboard = [UIStoryboard storyboardWithName:@"iPhone4.storyboard" bundle:[NSBundle mainBundle]];
于 2013-07-15T05:49:05.627 に答える