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 を取得できない時の対処方法でした。
ご参考になれば幸いです。