2017-02-13 5 views
0

コンテキストスウィフトどのように3つのビューコントローラ

と戻るボタンを作るために、適切に/どのように閉じビューコントローラを使用する方法私は3つのビューコントローラを持っています。 AはCを開くBを開きます。私はBとCに戻るボタンを持っています。バックコントローラーを再ロードせずに、C - > BとB - > Aから戻るボタンが必要です。私はビューコントローラを却下しようとしました。

問題

私はCよりもBに移動し、Cを却下する場合、それはBに戻りますが、私はBを閉じた場合、それはCに、ではない

A -> B -> C -> back -> B -> back -> C 

Should be: A -> B -> C -> back -> B -> back -> A 

コードに戻り

A、B及びCにおける

@IBAction func backButton(_ sender: Any) { 
    dismiss(animated: true) 
} 
+1

ようrootViewControllerとして

@IBAction func showB() { navigationController?.pushViewController(viewControllerB, animated: true) } 

とembedのViewController-Aあなたがする 'UINavigationController'を使用しています:あなたのViewController-AにおけるこのようSTHを実装移行とライフサイクルを処理しますか? –

+0

@toiavalleこのような状況では、popViewControllerを使うべきです.UINavigationControllerを使用した場合、スタックの形で各コントロールの上にコントロールが追加されます。コントローラを却下しようとしていますが、例(A-B-C)はCを取り消し、Bはその上に来るので、まだCの下にありますので、Aの代わりにCに戻ります。 –

+0

unwind segueを使うことをお勧めします。 – PeejWeej

答えて

1

自分でナビを操作する代わりにUINavigationControllerpushUIViewControllersとしてください。 UINavigationControllerは、戻るボタンの正しい動作を処理します(必要なIBActionはありません)。

など。ストーリーボードでUINavigationControllerのインスタンスまたはプログラムによってこの

let viewControllerA = ViewControllerA() // or instantiate from storyboard 
let masterNavigationController = UINavigationController(rootViewController: viewControllerA) 
+0

ありがとう@MarkHim。同じNCで複数のVCを使用するか、VCごとに1つのNCを使用する必要がありますか? StoryBoardの複数のVCを同じNCに接続するにはどうしたらいいですか? – toiavalle

+1

@toiavalleは最初のコントローラに接続します。残りの部分はsegueを使用してください。 –

関連する問題