ViewController を dismiss する処理、iOSエンジニアになって3回ほど変えてきたので、なんとなくまとめます _(┐「ε:)_
IBAction で閉じる
初めて dismiss を実装した時はこの方法でした。
dismiss ならこれって感じで、iOSエンジニアになってから、なんの疑いもなく3年ほどこれでやってた気がしますw
@IBAction func dismissAction(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
UIStoryboard の Exit で閉じる
上の IBAction で閉じる方法がメンドくさくなりまして。
Storyboard だけで閉じる方法とかないのかなーと思って調べたのがキッカケでしたww
Storyboard だけで閉じる事は出来ないし、IBAction と大差ないですけど記載しま。
まず、閉じたい ViewController に以下のコードを追加します。
@IBAction func unwindToTop(segue: UIStoryboardSegue) {
}
追加したら Storyboard に移動します。
Controlキーを押しながら閉じるボタンを Exitアイコンまでドラッグします。

自動で表示されるポップアップ内に unwindToTopWithSegue: が増えてるので、選択して実行。
これで閉じるのですが、ふーんって感じでした。
感動もクソもなかったので、これは使ったり使わなかったり。w
Segue で閉じる
これは使いました!というか今も使ってますw
個人的にこれが一番オススメです。
まず UIStoryboardSegue を継承しているカスタムクラスを以下のように作成。
import UIKit
class DismissSegue: UIStoryboardSegue {
override func perform() {
self.source.dismiss(animated: true, completion: nil)
}
}
作成後、Storyboard に移動します。
Exit の時と同じく、Controlキーを押しながら閉じるボタンを ViewControllerアイコンまでドラッグ。
dismiss という項目が増えているので選択。

以上です!
クラスを定義しておけば、どこでも使いまわせるのに感動したのを覚えてます (۶•̀ᴗ•́)۶
ちなみに作成したクラス名が「HogeSampleSegue」だと「hoge sample」と表示されます。
違うよ!とかこういう方法あるよ!ってのがあれば教えてください。
では( ¯·ω·¯ )



コメント