| categories:develop

unWind segway

今までは、移行先のデレゲートで処理を行っていた事を、便利そうなSegueのunWindでやってみようと思いました。しかしながら、XCodeのストーリーボードでいろいろ探しても、どこにもそれらしくものが見つかりません。使うのやめようかとも思いましたが、調べました。簡単にどこかでコントロールクリックすればできると思ってましたが、違いました。

使いたい例は、ListVC(リストViewController)からセグウェイでDetailVCに行き、DetailVCにて編集終了後、unWindするという流れ。

  1. ListVCからDetailVCにセグウェイを設定(コントロールドラッグ)
  2. ListVCに下記のコードを追加
  3. DetailVCのexitをクリック、コネクションインスペクターにコードで追加したファンクションが表示される
  4. リンクをボタンなりに繋ぐ

 segway-unwind

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#>
    }

やっぱり、ストーリーボードは好きになれません。。

comments powered by Disqus