32

iOS 6 で、いつUIStoryboardSegue移行が完了したかを知ることは可能ですか? UIStoryboardSeguefrom UIButtonを追加して、navigationcontroller に別のプッシュを追加する場合と同様にUIViewController、プッシュ遷移が終了した直後に何かを実行したいと考えています。

4

5 に答える 5

20

プロトコルを使用してUINavigationControllerDelegate、次を定義できます。

– navigationController:didShowViewController:animated:
于 2013-08-19T09:54:48.113 に答える
8

Swift では、示されているように、UIViewControllerサブクラスからUINavigationControllerインスタンスを取得し、デリゲートを設定して、セグエの完了について通知を受けることができます。セグエを追跡するもう 1 つの論理的な場所は、AppDelegate.

ビュー コントローラー (略して VC) から実行する例:

class MyViewControllerSubclass : UIViewController, UINavigationControllerDelegate {

    func viewDidLoad() {
        self.navigationController.delegate = self
    }

    func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) {
        println("Did show VC: \(viewController)")
    }
 }

ただし、VC へのセグエが完了した場合にのみ表示されます。これは、提示されている VC のメソッドをデリゲートviewWillAppear()またはデリゲートする場合と同様です。viewDidAppear()ただし、ターゲット VC が提供されていない場合は通知されませ。また、View Controller が Navigation Controller スタックの一部である場合にのみ機能します。

追跡している VC で、次を追加して、VC (およびそのメモリ) の割り当てが解除されたことを検出するか、viewWillDisappear()メソッドをオーバーライドできます。

deinit {
    println(__FUNCTION__, "\(self)")
}
于 2015-01-28T15:30:43.180 に答える