私が持っている3つのビューコントローラのUIViewController連続解任コール
- ViewControllerA
- ViewControllerB
- ViewControllerCは
これは私が
- ViewControllerAを解決しようとしているシナリオですViewControllerBをプッシュn個のナビゲーション階層
ViewControllerBがモーダルとしてViewControllerCを提示近い デリゲート
ViewControllerC閉じるボタンが押されると、近くにデリゲートが送信され、ViewControllerCは
ViewControllerBが近い委任を受けて、しようとしたが却下されますViewControllerAがViewControllerBがBではないいくつかの理由について
を表示されるように 自体を却下解雇される。 ViewControllerBでキャンセルボタンを押すと、そのボタンを閉じることができます。
なぜ連続して終了できないのですか?
ViewControllerC
@IBAction func closeClick(sender: AnyObject) {
self.closeDelegate?.didClose()
self.dismissViewControllerAnimated(true, completion: nil)
}
ViewControllerB
func didClose() {
print("did close") // gets called
self.dismissViewControllerAnimated(false, completion: nil) // no dismiss
//self.navigationController?.popViewControllerAnimated(false)
}
@IBAction func cancelClick(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil) // works
}
ViewControllerCではなくViewControllerBからdismissViewControllerを呼び出す必要があります。あなたの説明から、pushControllerAnimatedという名前で、ViewControllerBを表示するように思えます。それが真であれば、popViewControllerAnimatedを呼び出してViewControllerAに戻る必要があります。 –
あなたが 'didClose'デリゲートを呼んだ時点で、View Controller Cはまだそれ自身を却下していません。あなたがストーリーボードを使用している場合、アンワインドセグを定義してコントローラAを表示し、それをビューコントローラcからトリガします。そうしないと、 'didClose'デリゲート*を呼び出した後にデリートするか、ビューコントローラbがデリゲート方法 – Paulw11
@ Paulw11私は、提案されたようにコントローラBからビューCを閉じることになった。あなたがこれを答えとして当てはめると、私は「答えた」とマークすることができます。ビューAを表示する前に、ビューBのフラッシュが見えるほど滑らかではありませんが、 – fes