我正在使用Storyboard处理iPhone应用程序,我需要处理从一个视图控制器到另一个视图控制器的视图更改。我有:从一个场景移动到一个视图控制器 - 尝试呈现其视图不在窗口层次结构中的ViewController
-INTROViewController.m
-INTROscene.m (this is a SKScene laid out by the above controller)
-UpgradeViewController.m
有一个子画面按钮INTROscene.m
和当我按下它时,它触发这是由其视图控制器(INTROViewController.m
)看到通知,并且这触发了对切换到另一个视图控制器(UpgradeViewController.m
)。如果我使用选项1,(甚至增加了,以确保第一观点已经出现了延迟),它会触发以下错误:
“试图提出ViewController中谁的观点是不是在窗口层次!”
我发现的切换视图控制器而不触发此错误(选项2)但视觉效果的方式是可怕的,与示出在两个视图之间的空屏幕少许滞后。此外,我不能使用任何使用modalTransitionStyle
的好转换。
在这种情况下切换视图的正确方法是什么?
在我的AppDelegate中,我没有根视图控制器(我不知道应该如何设置)。这是我得到错误的原因吗?如果是这样,我该如何执行它?干杯!
//Option 1 (triggers the error above)
-(void)TransitionTo_Upgrades_ViewController:(NSNotification *)notification
{
//Take from INTROViewController to UpgradeViewController
UpgradeViewController *controllerUPGRADES = [self.storyboard instantiateViewControllerWithIdentifier:@"Upgrades_storyboard"];
controllerUPGRADES.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self performSelector:@selector(NowGotoUPRADES) withObject:nil afterDelay:2.0];
}
- (void)NowGotoUPRADES
{
[self presentViewController:controllerUPGRADES animated:YES completion:nil];
}
//Option 2 (no error but horrible effect)
-(void)TransitionTo_OPTIONS_ViewController:(NSNotification *)notification
{
[self performSelector:@selector(NowGotoOPTIONS) withObject:nil afterDelay:2.0];
}
- (void)NowGotoOPTIONS
{
//Take from INTROViewController to UpgradeViewController
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
UIViewController *DesiredViewController = [storyBoard instantiateViewControllerWithIdentifier:@"Options_storyboard"];
[[[[UIApplication sharedApplication] delegate] window] setRootViewController:DesiredViewController];
}
嗨。感谢您确认我的疑惑。这是疯狂的,但这是不能做到的!你有没有说可以直接在视图控制器中设置整个skscene而不必使用另一个类?我理解正确吗?这可能是一个解决方案 – jeddi 2014-11-19 21:12:19
是的,这应该是可能的。只需使用一个视图控制器即可拥有多个skscenes。 – 16648 2014-11-21 01:00:43