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

こちらの記事で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では動きませんので現状ではこちらのコードを書いておいた方が良いと思います。

 

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

 

2018/04/14追記 iOS8はもういいかな・・・
自分のアプリではiOS8はもう切りました。

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

Comments...

コメントは認証制です。詳しくは下記の注意をお読みください。お気軽にコメントお願いします!

Write a Comment

コメント時の注意

「Twitter」「Facebook」「Google+」「WordPress」のいずれかのアカウントをお持ちの方は各アカウントと連携することでコメントできます。 コメントしたことはSNSに流れませんので、アカウントをお持ちの方はこちらの方法でコメントを投稿して下さると嬉しいです。 アカウントをお持ちでない方はメールアドレスで投稿することができます。 初回コメント時は承認後に表示されます。

Related Memo...

UINavigationController + UIScrollView の組み合わせで使っている時に謎の余白ができる時

UINavigationController + UIScrollView の組み合わせで使っていて、UIScrollView 上に AutoLayout で上下左右0で View を設置しているのに、30px程度上にずれてしまうとき。

`navigationController.navigationBar.isTranslucent = false` にすると直るかもしれない。

ScrollView上のコンテンツとNavigationBarの重なっているところが透過していたら多分これで直せるはず。

通常のターゲットではちゃんと動いているのに、iOSSnapshotTestCase を用いたテストでだけこの対応が必要なのよくわからないけれど。。。

iOS

記事を書くほどでもないけれどメモっておきたいこと

テスト投稿。

例えばiphone7 の画面サイズ

750 × 1334
半分375 × 667

iOS

UITableView.RowAnimation の .none はアニメーションするよ

UITableView.RowAnimation の .none はアニメーションがnoneなわけじゃなく、デフォルトの設定を使うよという意味らしい。

The inserted or deleted rows use the default animations.

なのでアニメーションしちゃう。今更の気づき。

 

iOS
more