如何打开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]; }