根据Apple 的资源编程指南,您应该能够对任何类型的资源文件使用设备修饰符
这是报价单
您可以将设备修饰符应用于任何类型的资源文件。
然而,虽然这似乎适用于大多数资源(图像、笔尖),但在将它与故事板一起使用时遇到了问题。
我尝试做的是有两个故事板,其中一个~ipad
的文件名附加了后缀,并尝试像下面这样加载它
UIStoryboard *mySB =
[UIStoryboard storyboardWithName:@"MyStoryboard" bundle:nil];
myViewController = [sigRequestSB instantiateInitialViewController];
我得到了一个NSInternalInconsistencyException
例外
奇怪的是,如果我有一个带有~ipad
修饰符的故事板,我只会收到这个错误,如果我只有一个没有修饰符的故事板,它只会将它加载到 iPad 上。此外,如果我检测到正在运行的设备并使用完整文件名加载情节提要(即在 iPad 上将“~ipad”附加到文件名),它就可以工作。
这是完整的错误
2013-08-29 15:32:44.294 MyApp [18757:c07] *由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在包中加载 NIB:“NSBundle(已加载)”,名称为“UIViewController-Cq1-” k2-VhC'和目录'MyStoryboard.storyboardc''