根据Apple's Resource Programming Guide,您应该可以将设备修饰符用于任何类型的资源文件
这是引用
您可以将设备修饰符应用于任何类型的资源文件。
然而,虽然这似乎适用于大多数资源(图像,笔尖),但在使用故事板时遇到了问题。
我尝试过做的是有两个故事板,其中一个故事板上附有~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''