【问题标题】:How to have same storyboard name for iPhone & iPad in multiStoryBoard Universal App?如何在 multiStoryBoard 通用应用程序中为 iPhone 和 iPad 设置相同的故事板名称?
【发布时间】:2014-01-21 11:43:46
【问题描述】:

我正在创建一个多故事板应用程序。根据要求,我在不同的情况下使用不同的故事板。为了支持所有设备,我必须这样编写代码:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
   UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"blah_iPhone" bundle:nil];
   self.window.rootViewController = [storyboard instantiateInitialViewController];
}
else
{         
  UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"blah_iPad" bundle:nil];
  self.window.rootViewController = [storyboard instantiateInitialViewController];
}
[self.window makeKeyAndVisible];

我也尝试过使用波浪号 (~),将故事板命名为 blah~iphoneblah~ipad,但它会抛出如下错误:

2014-01-21 17:05:44.941 test[2709:60b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/3D8EC72E-D20D-4C60-A413-E8040A455262/blah.app> (loaded)' with name 'UIViewController-aYh-JW-qLA' and directory 'blah.storyboardc''
*** First throw call stack:
(0x2d4edf4b 0x37c846af 0x2d4ede8d 0x2ffbfe39 0x3010c03d 0x40ff5 0x2fcd12ff 0x2fcd0d4f 0x2fccb353 0x2fc6641f 0x2fc65721 0x2fccab3d 0x3211670d 0x321162f7 0x2d4b89df 0x2d4b897b 0x2d4b714f 0x2d421c27 0x2d421a0b 0x2fcc9dd9 0x2fcc5049 0x4134d 0x3818cab7)
libc++abi.dylib: terminating with uncaught exception of type NSException

有什么想法吗??

【问题讨论】:

  • 这里blah.storyboardc 好像有错别字,请注意末尾多出的c
  • 也尝试在 plist 文件中更改相同的内容
  • @Desdenova .. 我也这么认为,但不是.. 那是编译器生成的错误
  • @Bonnie .. 这也不起作用.. 为两个键保留“blah”。尝试了所有选项。
  • 如果您使用情节提要,为什么要手动管理窗口?为什么不直接返回YES 并从目标设置中设置主界面文件?

标签: ios nsstring storyboard ios-universal-app tilde


【解决方案1】:

也许我遗漏了一些东西,但如果您使用情节提要文件,我不明白您为什么要手动管理窗口。

我认为您正在为现有项目添加通用支持。因为如果您创建一个新的通用应用程序,一切都会如您所愿。

您的应用委托中需要您的 application:didFinishLaunchingWithOptions: 方法,如下所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    return YES;
}

你的目标设置应该是这样的,注意 iPhone / iPad 的切换并为每个设备选择不同的故事板。

【讨论】:

  • 是的。你错过了很多东西。我在这里要求的是,如何为两个故事板使用相同的名称:(
  • 是的,我是这么认为的。blah_iPhone,blah_iPad 是你能做的最好的。
  • 不..有一些带有波浪号(〜)符号的概念..只需要为它工作。
  • 我想我找到了你要找的东西。祝你好运stackoverflow.com/questions/13742930/…
猜你喜欢
  • 2015-01-27
  • 1970-01-01
  • 2016-12-16
  • 2014-11-22
  • 2012-02-20
  • 2016-05-31
  • 2017-05-07
  • 1970-01-01
  • 2014-09-07
相关资源
最近更新 更多