0

アプリケーションには 3 つのビューがあります。

ボタンがクリックされたときにビューを適切に開いて読み込む方法を知りたいです。

現在、最初のビューからボタンをクリックすると、次のように2番目のビューが開きます

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

そして、2 番目のビューが開いたので、このように 3 番目のビューを開きます

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

SecondViewController3番目のものをプッシュするのと同じ:

- (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 に答える