【发布时间】:2014-10-19 06:48:41
【问题描述】:
我正在使用 Storyboard 开发 iPhone 应用程序,我需要处理从一个视图控制器到另一个视图控制器的视图更改。我有:
-INTROViewController.m
-INTROscene.m (this is a SKScene laid out by the above controller)
-UpgradeViewController.m
INTROscene.m 中有一个精灵按钮,当我按下它时,它会触发其视图控制器 (INTROViewController.m) 看到的通知,这会触发切换到另一个视图控制器 (UpgradeViewController.m)。如果我使用 Option 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];
}
【问题讨论】:
标签: ios iphone uiviewcontroller sprite-kit skscene