0

SWRevealViewController を使用してスライド メニューを作成しています。メニューにアクセスする前に、ユーザーがログインできるようにログイン ビューが表示されます。ここで、ユーザーが切断してログインビューを再度表示できるようにします。私の質問は、SWRevealViewController をポップする方法です。

ログイン後にアプリケーションへのアクセスを提供するコードは次のとおりです。

MainViewController *vMainMenu = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
    vMainMenu.strURL = URL;
    LeftMenu *vLeftMenu = [[LeftMenu alloc] initWithNibName:@"LeftMenu" bundle:nil];

    UINavigationController *principalNavController = [[UINavigationController alloc] initWithRootViewController:vMainMenu];
    UINavigationController *rearNavController = [[UINavigationController alloc] initWithRootViewController:vLeftMenu];

    SWRevealViewController *mainRevealController = [[SWRevealViewController alloc] initWithRearViewController:rearNavController frontViewController:principalNavController];

    mainRevealController.delegate = self;

    self.viewController = mainRevealController;

    principalNavController.navigationBar.hidden = YES;
    rearNavController.navigationBar.hidden = YES;

    self.window.rootViewController = self.viewController;

この解決策は機能していません:

[self.revealViewController.navigationController popViewControllerAnimated:YES];
Splash *vSplash = [[Splash alloc] initWithNibName:@"Splash" bundle:nil];
[self.navigationController pushViewController:vSplash animated:YES];

助けてください

ありがとうございました。

4

3 に答える 3

0

ポップで LoginViewController に戻ることはできません。これを行うには、アニメーションなしで PresentViewController を追加できます。

Splash *vSplash = [[Splash alloc] initWithNibName:@"Splash" bundle:nil];
[self presentViewController: vSplash animated:NO completion:nil];
于 2015-02-16T15:02:27.557 に答える
0

「巻き戻しセグエ」が使えます。巻き戻しセグエは、通常のセグエと同様に、前進ではなく後退します。

まず、Login View Controller に移動し、次のメソッドを追加します。

-(IBAction)unwindToLoginScreen:(UIStoryboardSegue *)segue {
}

メソッドは空の場合があり、任意の名前を付けることができます。コードに多くのアンワインド セグエがある可能性があり、それらを区別できると便利なため、わかりやすい名前を使用することをお勧めします。

このアンワインド メソッドは、ストーリーボード上のすべてのビュー コントローラーに表示されるグローバル定数として機能します。

ここで、ログイン画面に戻ることができる各ビュー コントローラーで、Unwind Segue を作成します。ストーリーボードでこれを行うことができます:

  1. 必要なView Controllerを選択します。上部のバーには、View Controller を表すボタン、First Responder を表すボタン、Exit を表すボタンの 3 つのボタンが表示されます。
  2. Ctrl キーを押しながら View Controller ボタンから Exit ボタンにドラッグします。コンテキスト メニューが表示され、ストーリーボードで作成したすべての表示可能なアンワインド メソッドが一覧表示されます。
  3. ドキュメント アウトラインでは、View Controller の "Unwind segue" が表示されます。そのセグエに識別子を追加できます(この場合は「ログイン」など)。次に、performSegueWithIdentifier を呼び出します。ログイン ビュー コントローラーで作成したものを選択します。

これを行うと、ビュー コントローラーとログイン ビュー コントローラーの間の完全なスタックが巻き戻されます。つまり、Login ビュー コントローラーの上にスタックされたすべてのビュー コントローラーがポップされます。

通常のセグエと同じように、アンワインド セグエに prepareForSegue を使用することもできます。また、セグエの結果として何かをしたい場合は、 -(IBAction) メソッドにコードを追加できます。

于 2016-01-26T17:11:26.733 に答える