0
-(void)backAction:(id)sender
{ 
   SecondViewController *viewCtrl = [[SecondViewController alloc] init];

   [self.presentingViewController dismissModalViewControllerAnimated:NO];

   [self.presentingViewController presentModalViewController:viewCtrl animated:YES];
}

現在のコントローラーを使いたいdismissModalViewControllerAnimatedのですが、新しいコントローラーを提示します。しかし、それだけdismissModalViewControllerAnimated:NOです。

なぜ?

4

3 に答える 3

1

最初の行で自分自身を却下した後、self.presentingViewControllerはnilになります。したがって、あなたがしなければならないのは、解任を行う前に、そのコントローラーが何であれ、直接参照を取得することだけです。次の例では、表示側のビュー コントローラーは ViewController クラスのものです。実際に表示しているView Controllerであるクラスを使用する必要があります。

-(void)backAction:(id)sender {
     ViewController *presenter = (ViewController *)self.presentingViewController; 
     SecondViewController *viewCtrl = [[SecondViewController alloc] init];

     [presenter dismissModalViewControllerAnimated:NO];
     [presenter presentModalViewController:viewCtrl animated:YES];
}
于 2012-12-17T07:39:09.847 に答える
0

多分あなたはこれを試すことができます:

[self.presentingViewController dismissViewControllerAnimated:NO completion:^{
    [self.presentingViewController presentModalViewController:viewCtrl animated:YES];
}]
于 2012-12-17T07:17:38.137 に答える
0

この行では、すでにView Controllerを閉じています

[self.presentingViewController dismissModalViewControllerAnimated:NO];

次に、次の行で、既に閉じられたビュー コントローラーを使用してモーダル ビューを事前設定しようとしています。

[self.presentingViewController presentModalViewController:viewCtrl animated:YES];

代わりに、これら両方のビューの親ビュー コントローラー (存在する場合) を使用してモーダル ビューを表示してみてください。親View Controllerから2番目のモーダルビューを起動できるように、最初のビューを閉じた後に親View Controllerに通知を送信することもできます。

于 2012-12-17T07:24:00.093 に答える