我有一个通用应用程序,我在 application:didFinishLaunchingWithOptions
中手动加载我的主 Storyboard。
我有 2 个用于 iPhone 和 iPad 的 Storyboard,它们具有 ~iPhone
和 ~iPad
后缀。我正在使用以下方式加载 Storyboard:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
self.initialViewController = [storyboard instantiateInitialViewController];
这会将 Unknown class ViewController in Interface Builder file.
打印到控制台,所以显然它没有加载正确的 Storyboard。但是,当我使用 [UIStoryboard storyboardWithName:@"MainStoryboard~iPhone"bundle:nil];
它工作正常,但当然只适用于 iPhone。
我错过了什么?如何使用名称后缀自动选择正确的 Storyboard?
最佳答案
我不知道有任何基于文件名后缀的 Storyboard自动选择。您可以使用 userInterfaceIdiom
来选择 iPad 还是 iPhone:
if ([[UIDevice currentDevice] userInterfaceIdiom] ==UIUserInterfaceIdiomPad) {
UIStoryboard *storyboard =
[UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
} else {
[UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
}
但是如果你这样做是为了启动一个特定的 View Controller ,你需要做的就是将“开始”箭头拖到 Storyboard中你喜欢的 View Controller 上
或者 - 在 Storyboard中选择 View Controller ,转到属性 instpector 并勾选 isInitialViewController
关于iphone - 根据设备类型选择不同的 Storyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14672023/