2016-04-04 13 views
0

私のアプリでは3つのビューコントローラがあります。白、赤、青。ホワイトは、アプリのメインビューです。2つのモーダル表示されたビューコントローラ - 両方を却下

ボタンタップでは、白がモーダルに赤を表示します。赤はモーダルに青を提示します。すべては順調です。ブルーは、例えば、ユーザが完了するための何らかの形態では、ユーザは青でDismissをタップする。

Three view controllers

青、白、メインUIにユーザーを返すようにしたいと思います。ユーザーのタップは閉じたとき、これは動作します:

@IBAction func didTapDismissBoth(sender: AnyObject) { 
    let red = presentingViewController! 
    let white = red.presentingViewController! 
    white.dismissViewControllerAnimated(true, completion: nil) 
} 

どちらレッド&ブルーは確かに却下んが、ブルーはレッドすぐとを消滅解雇アニメーションをやって見ています!赤色のフラッシュは視覚的にぎくしゃくしており、スローアニメーションがオンのときにSimulatorで簡単に表示されます。

私はむしろブルーを白く見せるために優雅に画面から外れて見えるでしょう。

ブルーからホワイトに戻るときにレッドが醜いヘッドを育てるのを防ぐことはできますか?

答えて

0

Redのプレゼンテーションスタイルを「現在のコンテキストで」設定して(IBで)欲しい効果をシミュレートできました。これは、赤の親の(白い)ビューを保持するようにUIKitに指示します。赤はその視点で透明性を持っており、白は見えるだろう。

解雇プロセスでは、私は赤を完全に透明に設定し、青で動かします。

@IBAction func didTapDismissBoth(sender: AnyObject) { 
    let red = presentingViewController! 
    let white = red.presentingViewController! 
    red.view.alpha = 0 // Red presents "over current context" so white's view still exists. White's view will show through this transparent red 
    red.dismissViewControllerAnimated(true, completion: { // dismiss blue, revealing transparent red & white showing through 
     white.dismissViewControllerAnimated(false, completion: nil) }) // dismiss red with no animation 
} 

これは、赤い点滅の問題を隠していますが、解雇アニメーションのプロセスについては説明していません。白の視点が不必要に残っていることを意味します。

0

私はこのために巻き戻しを使用します。あなたはストーリーボードを使用していますが、なぜそれを利用しないのですか?青色の表示コントローラーから白い表示コントローラーへの巻き戻しセグを作成するだけで完了です。

+0

良いアイデア。それを試みた。同じ結果!赤い点滅。 –

+0

ああ、あなたは 'shouldAutomaticallyForwardAppearanceMethods()'を見てみることもできますが、今は試してみる時間がありません。 – Jelly

関連する問題