ViewController を dismiss する処理、iOSエンジニアになって3回ほど変えてきたので、なんとなくまとめます _(┐「ε:)_
IBAction で閉じる
初めて dismiss を実装した時はこの方法でした。
dismiss ならこれって感じで、iOSエンジニアになってから、なんの疑いもなく3年ほどこれでやってた気がしますw
1 2 3 |
@IBAction func dismissAction(_ sender: Any) { self.dismiss(animated: true, completion: nil) } |
UIStoryboard の Exit で閉じる
上の IBAction で閉じる方法がメンドくさくなりまして。
Storyboard だけで閉じる方法とかないのかなーと思って調べたのがキッカケでしたww
Storyboard だけで閉じる事は出来ないし、IBAction と大差ないですけど記載しま。
まず、閉じたい ViewController に以下のコードを追加します。
1 2 3 |
@IBAction func unwindToTop(segue: UIStoryboardSegue) { } |
追加したら Storyboard に移動します。
Controlキーを押しながら閉じるボタンを Exitアイコンまでドラッグします。
自動で表示されるポップアップ内に unwindToTopWithSegue: が増えてるので、選択して実行。
これで閉じるのですが、ふーんって感じでした。
感動もクソもなかったので、これは使ったり使わなかったり。w
Segue で閉じる
これは使いました!というか今も使ってますw
個人的にこれが一番オススメです。
まず UIStoryboardSegue を継承しているカスタムクラスを以下のように作成。
1 2 3 4 5 6 7 8 9 |
import UIKit class DismissSegue: UIStoryboardSegue { override func perform() { self.source.dismiss(animated: true, completion: nil) } } |
作成後、Storyboard に移動します。
Exit の時と同じく、Controlキーを押しながら閉じるボタンを ViewControllerアイコンまでドラッグ。
dismiss という項目が増えているので選択。
以上です!
クラスを定義しておけば、どこでも使いまわせるのに感動したのを覚えてます (۶•̀ᴗ•́)۶
ちなみに作成したクラス名が「HogeSampleSegue」だと「hoge sample」と表示されます。
違うよ!とかこういう方法あるよ!ってのがあれば教えてください。
では( ¯·ω·¯ )
コメント