Ios 如何以编程方式在视图之间转换?

Ios 如何以编程方式在视图之间转换?,ios,cocoa-touch,uiview,uiviewcontroller,segue,Ios,Cocoa Touch,Uiview,Uiviewcontroller,Segue,我正在开发一个游戏,我想在多个视图之间转换,例如菜单屏幕、游戏屏幕、游戏屏幕等。最简单的方法是什么?我不确定是否应该使用视图堆栈,因为视图的显示顺序并不总是颠倒的。我假设“视图堆栈”是指UINavigationController 最简单的方法是将对所有视图控制器的引用保留在某个位置,例如,我看到人们经常使用应用程序委托,因此应用程序委托的类扩展看起来有点像: @interface AppDelegate () @property (nonatomic, strong) UIViewContr

我正在开发一个游戏,我想在多个视图之间转换,例如菜单屏幕、游戏屏幕、游戏屏幕等。最简单的方法是什么?我不确定是否应该使用视图堆栈,因为视图的显示顺序并不总是颠倒的。

我假设“视图堆栈”是指UINavigationController

最简单的方法是将对所有视图控制器的引用保留在某个位置,例如,我看到人们经常使用应用程序委托,因此应用程序委托的类扩展看起来有点像:

@interface AppDelegate ()

@property (nonatomic, strong) UIViewController *rootViewController; //this is what gets set as the window's root VC
@property (nonatomic, strong) UIViewController *mainScreenViewController;
@property (nonatomic, strong) UIViewController *gameScreenViewController;
@property (nonatomic, strong) UIViewController *gameOverScreenViewController;

@end
假设rootViewController只控制应用程序其余部分的容器视图(不过,如果将所有这些逻辑放入rootViewController中,您可能会得到很好的服务…)

现在,无论何时需要显示某个屏幕,都可以调用如下方法:

- (void)switchToViewController:(UIViewController *)viewController
{
    [self.rootViewController.view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
    [self.rootViewController.view addSubview:viewController.view];
}
您现在可以编写命名更容易记忆的方法,如
-switchToGameOverScreen

- (void)switchToGameOverScreen
{
    [self switchToViewController:self.gameOverScreenViewController];
} 
这种基本的视图导航模式大致可以在
UITabBarController
中找到,通常也可以在
UISegmentedControl
s控制的视图中找到


希望这有帮助

如果您正在Cocos-2d中开发游戏,场景之间的转换可以如下所示:

[[CCDirector sharedDirector]替换场景:[CCTransitionCrossFade transitionWithDuration:0.5f场景:[游戏结束场景]]

这里的GameOver是一个新场景,它在过渡效果之后进入

cocos-2d中还有许多其他的转换,用于从一个场景转换到另一个场景,即 0CCTransitionCrossFade 1.过渡衰减 2.CCTransitionFadeBL 3.CCTransitionFadeDown 4.CCTransitionFadeTR 5.CCTransitionFadeUp 6.CCTransitionFlipAngular 7.CCTransitionFlipX 8.CCTransitionFlipY 9CCTransitionJumpZoom 10CCTransitionMovinb 11CCTransitionMovinl 12CCTransitionMovint 13CCTransitionPageTurn 14CcTransitionRadialCw 15转座舱 16转变收缩生长 17CCTransitionSlideInB 18CCTransitionSlideInL 19CCTransitionSlideInR 20CCTransitionSlideInT 21CCTransitionSplitCols 22CCTransitionSplitRows 23CCTransitionTurnOffTiles 24CCTransitionZoomFlipAngular 25CCTransitionZoomFlipX 26CCTransitionZoomFlipY


谢谢

啊,好的,谢谢。因此,我不应该使用任何storyboard/segue功能?如果您不需要支持iOS 4,那么这听起来是一个不错的选择(我经常不得不这样做,可能是我不想建议的原因;)。这在某种程度上取决于应用程序视图之间的流程有多复杂,以及在情节提要中建模与仅在代码中建模需要多少工作量。:/我没有意识到情节提要仅与iOS5+兼容,当我创建一个新项目时,它默认使用它们,我不知道该怎么做。只是不要使用故事板,只要让应用程序代理在启动时从nib加载一个根视图,并将其设置为窗口的根视图控制器。好的,看起来我必须稍微重写我的应用程序,我不太熟悉这样做,所以可能需要一段时间。希望你的答案能奏效。