iPad模拟器/设备使用iPhone的故事板。
iPad模拟器/设备使用iPhone的故事板。
我已经为iPhone创建了一个应用程序,并希望将其转换为iPad,按照这个答案的步骤进行操作。
- 复制你的iPhone-Storyboard并将其重命名为MainStoryboard_iPad.storyboard
- 使用任何文本编辑器打开这个文件。
- 搜索targetRuntime="iOS.CocoaTouch"并将其更改为targetRuntime="iOS.CocoaTouch.iPad"
- 现在保存所有内容并重新打开Xcode -> iPad-Storyboard包含与iPhone文件相同的内容,但可能会被重新排列
所有步骤都正确完成,但iPad模拟器/设备仍然使用iPhone的故事板。有什么建议吗?
我已经在概要->iPad部署信息->主故事板中设置了iPad故事板。并且在main.plist->主故事板文件基本名称(iPad)中将其设置为iPad故事板。
请告诉我我漏掉了什么。
更新。有趣的是,当我从iPad部署信息中删除iPad故事板名称时,设备仍然使用我的iPhone故事板。
问题的原因是在iPad模拟器或设备上使用了iPhone的故事板,因此需要手动选择正确的故事板并使用适当的根视图控制器来解决这个问题。
解决方法是在AppDelegate中选择正确的故事板,并使用适当的根视图控制器进行程序化呈现。首先,在AppDelegate.h文件中声明一个UIViewController变量rvc。然后,在AppDelegate.m文件的application:didFinishLaunchingWithOptions:方法中,根据设备类型选择正确的故事板,并使用对应的标识符实例化rvc。最后,将rvc的视图添加到window上,并将window的根视图控制器设置为rvc。
下面是实现的代码:
AppDelegate : UIResponder{ UIViewController *rvc; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"IPAD_Storyboard" bundle:nil]; rvc = [storyboard instantiateViewControllerWithIdentifier:@"identifierForController"]; } else { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; rvc = [storyboard instantiateViewControllerWithIdentifier:@"identifierForController"]; } [self.window addSubview:rvc.view]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; }
然而,这种方法并不是最佳的方式,但是可以解决你遇到的问题。这种方法已经过时了,现在推荐使用以下代码替换addSubview行:
[self.window setRootViewController:rvc];
这样就可以解决iPad模拟器或设备上使用iPhone故事板的问题。希望这能帮到你。