0

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

我想知道单击按钮时如何正确打开和加载视图。

目前,当从第一个视图单击按钮时,我会像这样打开第二个视图

[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];

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

任何帮助,将不胜感激。

4

1 回答 1

1

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

您可以隐藏导航栏,它会更干净,并且会符合 Apple 的推送视图指南。

假设您使用 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(第一个视图)上添加一个按钮并按下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];
}
于 2013-10-08T07:54:09.800 回答