我正在构建一个通用iOS应用程序。 我在主视图上有几个按钮,用于加载其他视图控制器。 我已经设置了“Main.storyboard”和“iPad storyboard.storyboard”。 我在“主要”和“iPad”中提出了两种观点。 在“Main”上,我将Storyboard ID设置为“FirstCar”和FirstPlayer“。 在“iPad”上,我将它们设置为“FirstCarPad”和FirstPlayerPad“。 在常规设置中,我将应用程序指定为Universal,并将“Main”设置为iPhone的故事板和iPad的“iPad”。
我使用以下代码从初始视图启动故事板中的视图控制器。
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
int height = [UIScreen mainScreen].bounds.size.height;
if (height == 568.0) {
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"FirstCar"];
[self presentViewController:vc animated:YES completion:NULL]; }
}
else if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad){
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"ipad storyboard" bundle:nil];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"FirstCarPad"];
[self presentViewController:vc animated:YES completion:NULL]; }
当我点击访问“FirstCar”和“FirstCarPad”的第一个按钮时 ViewControllers一切正常,但是 当我点击访问“FirstPlayer”和“FirstPlayerPad”的第二个按钮时 viewControllers应用程序崩溃与此
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'Storyboard()不包含带有标识符'FirstPlayerPad'的视图控制器<'
但是我的viewControllers设置与Storyboard ID完全相同
我准备把头发撕掉。
任何人都可以帮助我。
答案 0 :(得分:0)
为了实现这一点,我复制了Finder中的Main.storyboard,将其重命名为Main-iPad.storyboard,然后将其添加到项目中。然后我右键单击新的故事板并选择Open Source。这显示了故事板作为代码,我将targetRuntime =“iOS.CocoaTouch”更改为targetRuntime =“iOS.CocoaTouch.iPad”。然后我再次右键单击它,但选择了Open Storyboard。 将设置设置为“Universal”并选择Main-iPad.storyboard作为iPad的故事板,一切正常。我只需要调整每个iPad视图中的元素大小并重新定位。耗时但值得。 希望这对任何人都有帮助。我希望当你从iPhone重新配置到iPad时,它会重新调整大小并重新定位视图中的元素,但很好。