11

ルートビューコントローラAによってナビゲーションスタックにプッシュされるビューコントローラBがあります。このビューコントローラBは、モデルが特定の状態にあるので、別のビューコントローラCをモーダルに表示しています。ビューコントローラを閉じると、CIもビュースタックコントローラBをポップします。私は1つだけの移行があるようなやり方でそれをしたいと思います。ios:モーダルビューコントローラを解除してプッシュビューコントローラをポップする方法

アイデア?

+0

xibsやストーリーボードを使用してレイアウトをレイアウトしていますか?ルートビューコントローラ内の3次ビューをインスタンス化してサブビューとして追加するのが最善の策です。これらは表示または非表示にすることができます。これは、モーダルビューを表示したり消したりするよりもはるかに柔軟性があります。 – ninehundredt

+0

私はストーリーボードを使用して、別の状態を表示するために独立したviewcontrollerを使用する方向に傾いていました。なぜなら、リンゴのマニュアルでは別のインタフェースを表示して別のインタフェースとして提示すると、別々のランドスケープビュー)。私が必要とする実際のUIの変更は、現在のビューで隠されていない別のビューを使って実装する方が簡単だと思うので、私はあなたの提案を試します – Heisenberg

答えて

18

投稿したシナリオでは、ビューコントローラCのプレゼンテーションビューコントローラは実際にはナビゲーションコントローラになるため、Bをポップアップして拒否するように要求することができます。このコードは、ビューコントローラCにある:

-(IBAction)goBackToA:(id)sender { 
    [(UINavigationController *)self.presentingViewController popViewControllerAnimated:NO]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

あなたはストーリーボードを使用している場合は、アンワインドセグエバックAに直接ジャンプし、これと同じことを行うことができます。

+0

おかげで、 1つのビューコントローラとモデル状態に応じてそのサブビューを変更する場合、私は2つの別個のビューコントローラを使用する必要がある場合あなたのアプローチを試してみます – Heisenberg

+0

正確に私が必要なもの! – Nerrolken