IOS 6でUIStoryboardSegue
の移行がいつ終了したかを知ることはできますか? UIStoryboardSegue
からUIButton
を追加して、ナビゲーションコントローラーで別のUIViewController
をプッシュするときのように、プッシュ遷移が完了した直後に何かにしたいと思います。
UINavigationControllerDelegate
プロトコルを使用して、以下を定義できます。
– navigationController:didShowViewController:animated:
viewDidAppear:
メソッドを使用しない場合は、カスタムセグエを作成できます。 perform
メソッドでは、遷移にアニメーションを使用し、完了ブロックを含めることができます。アニメーションが完了したら、そこにコードを追加できます。
Swiftでは、次のようにUIViewController
サブクラスからUINavigationController
インスタンスを取得してデリゲートを設定し、セグエの完了について通知を受けることができます。セグエを追跡する別の論理的な場所は、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のセグエが完了したときにのみ表示され、viewWillAppear()
またはviewDidAppear()
VCが表示されますが、ターゲットVCがn-presentedである場合は通知されません。ビューコントローラーがナビゲーションコントローラスタックの一部。
VCに、次のコードを追加して、VC(およびそのメモリ)が割り当て解除されたときを検出するか、viewWillDisappear()
方法。
_deinit {
println(__FUNCTION__, "\(self)")
}
_