在通用应用中获取主故事板

7
尝试创建一个通用项目,我想通过标识符从Storyboard中加载vc。有没有一种方法可以在访问Storyboard时避免显式检查语言环境?
这个丑陋的代码可以工作...
UIStoryboard *storyboard;

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
}
else {
    storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
}

UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];

但是,这个字符串字面量"main storyboard"已经很难看了(不确定为什么项目不能保存一个主故事板设置,以便应用程序可以使用[UIStoryboard mainStoryboard];),而显式的惯用语检查则是一步太远。

是否有任何隐藏的智能(与支持视网膜显示的"@2x"图像后缀类似)可以清理这段代码?

1个回答

15
假设您正在从另一个视图控制器中执行发布的代码,则可以通过[self storyboard]来获取当前的故事板,其中self是任何UIViewController的实例。

1
谢谢。一石二鸟。希望我能点赞两次。 - danh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接