如何打开UIViewControllers和保持状态没有NavgationController

我在我的应用程序中有3个视图。

我想知道如何正确打开并加载点击button时的意见。

目前,当从第一个视图中点击一个button时,我打开第二个视图

[self dismissViewControllerAnimated:NO completion:nil]; getPLViewController = [[GetPLViewController alloc] initWithNibName:@"GetPLViewController" bundle:nil]; UIWindow* keyWindow= [[UIApplication sharedApplication] keyWindow]; [keyWindow addSubview:getProjectListViewController.view]; [self presentViewController:getPLViewController animated:NO completion:nil]; 

而现在第二个观点是开放的,我打开第三个像这样

 currentPLViewController = [[CurrentPLViewController alloc] initWithNibName:@"CurrentPLViewController" bundle:nil]; UIWindow* keyWindow= [[UIApplication sharedApplication] keyWindow]; [keyWindow addSubview: currentPLViewController.view]; [self presentViewController:currentPLViewController animated:NO completion:nil]; 

我不知道这是否正确了,因为如果我在上一个视图完成加载之前尝试加载视图,或者沿着这些行加载了视图,则一直遇到显示的视图出现问题。

这是我从视图控制器返回的方式

 [self dismissViewControllerAnimated:NO completion:nil]; 

所以我想知道这是一个正确的做法吗? 或者,还有更好的方法?

任何帮助,将不胜感激。

为什么你不在你的根视图上使用UINavigationController?

您可以隐藏导航栏,它会更干净,它将与苹果的指导方针相匹配,推送意见。

假设你使用XIB。 当你从AppDelegate添加第一个视图时,添加一个UINavigationController并隐藏这个:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; RootViewController *rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil]; UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController]; [navigationController setNavigationBarHidden:YES]; self.window.rootViewController = navigationController; [self.window makeKeyAndVisible]; return YES; } 

接下来在你的RootViewController (第一视图)上添加一个button并推送SecondViewController

 - (IBAction)displaySecondView { SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; [self.navigationController pushViewController:secondViewController animated:YES]; } 

在你的SecondViewController中推动第三个:

 - (IBAction)displayThirdView { ThirdViewController *thirdViewController = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil]; [self.navigationController thirdViewController animated:YES]; } 

并回到前一个视图的操作:

 - (IBAction)back { [self.navigationController popViewControllerAnimated:YES]; }