| categories:develop
unWind segway
今までは、移行先のデレゲートで処理を行っていた事を、便利そうなSegueのunWindでやってみようと思いました。しかしながら、XCodeのストーリーボードでいろいろ探しても、どこにもそれらしくものが見つかりません。使うのやめようかとも思いましたが、調べました。簡単にどこかでコントロールクリックすればできると思ってましたが、違いました。
使いたい例は、ListVC(リストViewController)からセグウェイでDetailVCに行き、DetailVCにて編集終了後、unWindするという流れ。
- ListVCからDetailVCにセグウェイを設定(コントロールドラッグ)
- ListVCに下記のコードを追加
- DetailVCのexitをクリック、コネクションインスペクターにコードで追加したファンクションが表示される
- リンクをボタンなりに繋ぐ
ListVCに追加したコードは、
@IBAction func unwind___XXX___(unwindSegue: UIStoryboardSegue, towardsViewController subsequentVC: UIViewController) または (unwindSegue: UIStoryboardSegue)
{
}
いろいろ試したところ、@IBAction func unwind___XXX___
が入っていれば認識されるよう___XXX___
の部分は必要なものに置き換えてください。引数も(unwindSegue: UIStoryboardSegue)
が入っていれば問題は無いようですが、こちらも追加・変更可能のようです。
あとListVCでデーターを処理して、以前からのデレゲートでの処理と同じになります。
@IBAction func unwindFromDetailView(unwindSegue: UIStoryboardSegue) {
// 処理
let title = unwindSegue.sourceViewController.title
.........
}
XCode7では、unwind…をタイプすると下記のコードを書き出してくれますが動きません。中途半端だ、、ちょっと数時間、嫌〜〜な気分になりました。。。
override func unwindForSegue(unwindSegue: UIStoryboardSegue, towardsViewController subsequentVC: UIViewController) {
<#code#>
}
やっぱり、ストーリーボードは好きになれません。。