テーブルセルがあるという点で、設定画面があります。それをクリックすると、ユーザーがオプションを選択できる別の画面に移動し、戻るボタンが押されたときに前のビューコントローラーにそれを戻します。
カスタムバーボタンアイテムを配置できますが、ビューにカスタムボタンを配置するのではなく、ナビゲーションバーの戻るボタンを使用して親ビューコントローラーに戻ります。
ナビゲーションの[戻る]ボタンをオーバーライドして、巻き戻しセグエアクションを指すようにできないようです。[戻る]ボタンがストーリーボードに表示されないため、緑色の[終了]ボタンをドラッグできません。
戻るボタンでプッシュセグエを巻き戻すことはできますか?
BlankarschからこのStackOverflow質問へのObjective-Cコードに基づく私の解決策は次のとおりです。 [戻る]ボタンイベントをトラップする方法
このコードを、[戻る]ボタンの呼び出しをトラップするビューコントローラー内に配置します。
override func didMoveToParentViewController(parent: UIViewController?) {
if (!(parent?.isEqual(self.parentViewController) ?? false)) {
println("Back Button Pressed!")
}
}
Ifブロックの内部で、返す必要があるすべてのものを処理します。また、現時点では親とself.parentViewControllerの両方がnilである可能性が高いため、ビューコントローラの呼び出しへの参照を戻す必要があるため、ビューコントローラツリーをナビゲートできません。
また、[戻る]ボタンを押しても親がnilにならない場合を見つけなかったので、nilの親をチェックするだけで済むかもしれません。したがって、このようなものはもう少し簡潔です:
override func didMoveToParentViewController(parent: UIViewController?) {
if (parent == nil) {
println("Back Button Pressed!")
}
}
しかし、私はそれがいつもうまくいくことを保証することはできません。
ある戻るボタンというビューコントローラーで次の操作を行います。
Swift
override func didMove(toParentViewController parent: UIViewController?) {
if !(parent?.isEqual(self.parent) ?? false) {
print("Parent view loaded")
}
super.didMove(toParentViewController: parent)
}
私も同じことを試しましたが、標準の戻るボタンのアクションをキャッチできないようです。解決策は、カスタムボタンを使用して、前のページに戻るセグエにバインドすることです。
ある種の委任を使用するか、カスタムの戻るボタンと巻き戻しセグエを使用できます。
さらに、メディエーターを使用してビューコントローラー間でデータを受け渡すこともできます。
http://cocoapatterns.com/passing-data-between-view-controllers/