【发布时间】:2013-07-12 14:32:47
【问题描述】:
我有一个包含 3 个故事板的应用程序,适用于 iPhone、iPhone 5 和 iPad。 2 iPhone 的故事板?由于一些明显的原因,我只想走这条路。 一切正常,我在 didFinishLaunchingWithOptions 中手动加载了与屏幕尺寸相关的故事板。 然后我复制了我的目标并将其重命名为另一个产品。现在,每当我尝试在 3.5 英寸设备上运行应用程序时,它根本不会加载相应的情节提要
“由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'在捆绑包中找不到名为'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”的故事板' * 首先抛出调用栈: (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:终止调用抛出异常
我在这里加载故事板。
- (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;
}
【问题讨论】:
-
你在用
storyboardWithName:bundle:吗? -
@Jumhyn 是的,你是对的,我正在使用 UIStoryboard *iPhone4Storyboard = [UIStoryboard storyboardWithName:@"iPhone4.storyboard" bundle:nil];
标签: iphone ios xcode4.5 uistoryboard info.plist