うるおいらんど

【Swift】カスタムUnwindSegueを作成する【iOS8編】

SegueSwift

追記があります。

こちらの記事でxcode7.1のiOS9環境でのカスタムSegueについて紹介しました。

【Swift】カスタムSegueとカスタムUnwindSegueを作成する【Xcode7.1】

しかし私のiOS7のiPhone4sちゃんで試してみるとアニメーションが適用されていないという事態。

iOS7、iOS8環境でも動かせる方法がわかったので、つけたした部分だけ紹介します。

カスタムUnwindSegueを作成する

書き足したコードはこの部分です

override func segueForUnwindingToViewController(toViewController: UIViewController, fromViewController: UIViewController, identifier: String?) -> UIStoryboardSegue? {
    if let id = identifier {
          let unwindSegue = myUnwindSegue(identifier: id, source: fromViewController, destination: toViewController, performHandler: { () -> Void in
          })
                return unwindSegue
          }
     return super.segueForUnwindingToViewController(toViewController, fromViewController: fromViewController, identifier: identifier)!
}

 

myUnwindSegueは作成したカスタムSegueファイルです。

UnwindSegueに関して

Unwind Segueが実行される時、戻り先のViewControllerのメソッドでsegueForUnwindingToViewControllerを探します。もしsegueForUnwindingToViewControllerが実装されている場合は、そのメソッドが返すSegueをUnwind Segueとして使用します。では、PrevFlipSegueをUnwind Segueとして指定してみましょう

参照元:Storyboard - カスタムSegueとカスタムUnwind Segueの作り方

PrevFlipSegueはここではmyUnwindSegueにあたります。

 

記述する場所は戻り先のViewControllerです

 

FirstViewControllerからSecondViewControllerへの遷移した後、 UnwindSegueを用いてFirstViewControllerに戻る場合には、FirstViewControllerにこの記述をします。

SecondからThirdへの遷移後のUnwindSegueを用いてSecondに戻る際には、Secondにも記述が必要です。

 

ちなみにiOS9でも動きます!

StoryBoard上でClassを設定すればiOS9上では動きますが、その他のOSでは動きませんので現状ではこちらのコードを書いておいた方が良いと思います。

 

無事動かせたので今度こそスッキリ!

 

参考リンク

Additional Notes追記

iOS8はもういいかな・・・

自分のアプリではiOS8はもう切りました。

カスタムセグエに関しては【Swift】カスタムSegueとカスタムUnwindSegueを作成する【Xcode7.1/iOS9】の方にSwift4に対応したコードを追記しておいたのでそちらを参照してください。

Comments

コメントはありません。

現在コメントフォームは工事中です。