【Swift】storyboard.instantiateViewController()で遷移先のViewを取得できない時の対処法

Storyboard はやはり苦手です。

今回は、タイトル通り Storyboard を使ったページ遷移方法について。
と言っても、Storyboard 上で全ての遷移処理を行うのではなく、Storyboard で作成した View をコードで取得し、その遷移処理もコードで書く方法を採用しています。
使用している関数は instantiateViewController で、こちらを使って遷移先の View を取得しています。
が、実機で実行したところ、この View 取得の処理でアプリがクラッシュしましたので、その対処法です。

参考にさせていただいた記事はこちらから。

storyboard – Swift 3, Xcode 8 Instantiate View Controller is not working – Stack Overflow
https://stackoverflow.com/questions/39776929/swift-3-xcode-8-instantiate-view-controller-is-not-working

こちらの記事の内容は、実際に私が遭遇した症状とは少し異なってはいるのですが、参考になりました。

 

修正方法ですが、まず変更前のコードがこちら。

let nextViewController = self.storyboard!.instantiateViewController(withIdentifier: "[ID名]") as! UIViewController
self.present(nextViewController, animated: true, completion: nil)

変更後がこちらです。

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let nextViewController = storyboard.instantiateViewController(withIdentifier: "[ID名]") as! UIViewController
self.present(nextViewController, animated: true, completion: nil)

変更前では、self.storyboard と指定していたのですが、変更後のコードでは、まず 1行目で、使用する Storyboard を指定してから、2行目で遷移先の View を指定するようにしています。
なお、Storyboard の名前は、環境に合わせて適宜変更してください、
上記のように変更したところ、問題なくページ遷移ができるようになりました!
storyboard から View を取得する処理で失敗しているから、てっきり View の指定方法が間違っていると思っていたのですが…どうやらその前段階の Storyboard の時点で何かがおかしかったようです。
そうなった原因は不明ですが、解決できてよかったです!

 

以上、Swift の storyboard.instantiateViewController() で遷移先の View を取得できない時の対処方法でした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG