0

我有一个带有 3 个用于 iPhone、iPhone 5 和 iPad 的故事板的应用程序。2 iPhone 的故事板?由于一些明显的原因,我只想走这条路。一切正常,我在 didFinishLaunchingWithOptions 中手动加载了与屏幕尺寸相关的故事板。然后我复制了我的目标并将其重命名为另一个产品。现在,每当我尝试在 3.5 英寸设备上运行应用程序时,它根本不会加载相应的故事板说这个

“由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'在捆绑NSBundle(已加载)'中找不到名为'iPhone.storyboard'的故事板'”我三重检查了故事板名称,复制捆绑资源及其目标成员资格,全部都是正确的。该应用程序正在以良好的方式加载适用于 iPhone 5 和 iPad 的 Storyboard。部署信息和信息。该列表只能有 2 个故事板条目 1) 用于 iPhone 和其他用于 iPad。如何将第三个故事板添加到 plist 中。

我是 Objective-C 的新手,所以请善待!

确切的错误消息是 2013-07-15 11:20:34.423 AppName[1907:c07] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“在捆绑包 NSBundle 中找不到名为“iPhone4.storyboard”的故事板( 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 回答