4

2つのビューコントローラーを連続して却下する2つの方法を試しましたが、2つ目ではなく1つだけが却下されました

メソッド1

-(void) LoginDone:(NSNotification *)notif 
 {
 [self dismissViewControllerAnimated:YES completion:NULL];   //previous viewcontroller
 [self dismissViewControllerAnimated:YES completion:NULL];   //current viewcontroller
  }

メソッド2

-(void) LoginDone:(NSNotification *)notif 
{
[self dismissViewControllerAnimated:YES completion:NULL];
 [[NSNotificationCenter defaultCenter] postNotificationName:@"LoginDone2" object:nil];

 }

-(void) LoginDone2:(NSNotification *)notif 
{
     [self dismissViewControllerAnimated:YES completion:NULL];


 }

以前のビューコントローラーと現在のビューコントローラーの両方を連続して閉じる方法を見つける必要があります。

4

6 に答える 6

8

これは今では古い質問ですが、まさに私が現在抱えている問題のようです。ここで私がしたこと:

    [self.presentingViewController.presentingViewController
     dismissViewControllerAnimated:YES completion:nil];

そして、それは私のために働きます。誰かに役立つことを願っています。

于 2014-03-12T02:21:09.513 に答える
5

電話することで

 [self dismissViewControllerAnimated:YES completion:NULL];

あなたはselfそれが提示したビューを却下するように言っています。表示されたビューを閉じるように同じselfオブジェクトに 2 回指示しても、結果は変わりません。つまりself、コードへのコメントに従って、「現在のビュー」と「前のビュー」を同時に表すことはできません。self現在または前のいずれかの単一のビューを表す単一のコントローラーです。

これを修正するには、(最上位のビューを表示した)と、前のビューを表示した他のView Controllerオブジェクトに送信dismissViewControllerAnimatedするself必要あります

言い換えれば、私は次のようなものを期待します:

-(void) LoginDone:(NSNotification *)notif 
{
   [self dismissViewControllerAnimated:YES completion:NULL];
   [self.previousController dismissViewControllerAnimated:YES completion:NULL];
}

実際には、2 番目のビュー コントローラーにメッセージを 1 つだけ送信すると、両方のビューが閉じられます ( source ):

複数のビュー コントローラーを連続して提示し、提示されたビュー コントローラーのスタックを構築する場合、スタックの下位にあるビュー コントローラーでこのメソッドを呼び出すと、その直接の子ビュー コントローラーと、スタック上のその子の上のすべてのビュー コントローラーが破棄されます。これが発生すると、最上位のビューのみがアニメーション形式で閉じられます。中間のView Controllerはスタックから単純に削除されます。最上位のビューは、そのモーダル遷移スタイルを使用して閉じられます。これは、スタック内の下位にある他のビュー コントローラーで使用されるスタイルとは異なる場合があります。

于 2012-07-08T06:33:57.653 に答える
1

これは古い質問であることは知っていますが、誰かがこの問題の解決策を探すかもし​​れないので、ここにあります:

-(void) closeModalViews 
{
    [previousVC dismissViewControllerAnimated:YES completion:^(void) {
        [self dismissViewControllerAnimated:YES];
    }];
}
于 2013-10-23T12:29:23.633 に答える
0

私が理解できる限り、あなたは以下のようなことを試みています:

  1. 2 つのビュー コントローラーがあります。
  2. あなたはそれらの両方を消滅させたいと思っています。
  3. 別のコントローラーが登場。

しかし、実際にはコントローラーが 1 つしか表示されていないのに、なぜ 2 つを閉じる必要があるのでしょうか?

于 2012-07-08T06:07:59.090 に答える