iOSアプリを作ることになり本格的にSwiftを勉強しています。
そして早速つまづきました...
タイトルにある通り、自作クラスを呼び出した時に紐付けたstoryboardが表示されなくて困りました。
storyboardで作った画面が表示されない
今回初めてstoryboardを使用して画面を作りました。(今更storyboardかよって感じですが、SwiftUIを使ってみたかったけど支給されているMacではスペックが足りず動作が激重でした...)
起動時にログイン判定して表示される画面を振り分けているのですが、自作した新規登録画面クラスを呼び出してもUIが反映されない...
storyboardの設定を見てもCustomClassで自作クラスに紐付けているし、呼び出されているクラスもUIViewControllerなので合っているはず。
とりあえず 『storyboard UIViewController 表示されない』でめっちゃググりまくりました
なんとか表示できた
色々な技術ブログ様を読み漁り、こちらの記事に辿り着きました。
【Swift3】ソースコード上から Storyboard 上に配置した ViewController にアクセスする
ソースコード上からということで自分のコードを見返してみるとwindow.rootViewControllerにそのまま自作クラスを渡していました。
ですので先ほどの記事を参考に以下のように書き換えたら、無事紐付けてあるstoryboardの画面が表示されました!
let storyboard = UIStoryboard(name: "Login", bundle: nil) let viewController = storyboard.instantiateInitialViewController() //取得したViewControllerを渡す ※storyboardから取得したViewControllerを渡さないと素のViewControllerを渡すことになりstoryboardが反映されない window.rootViewController = viewController self.window = window window.makeKeyAndVisible()
修正前のコードで表示されていた画面は自作クラスのもの?
修正前コードで表示されていた画面が本当に自作クラスのものなのかを確認してみました。
自作クラス内で背景色を変えるコードを書いてから自作クラスを直接表示させたら設定した色の画面が出たので、変更前までは自作クラスのまっ黒な画面が表示されていたようです。
今までコードでUIを作っていたので初めてstoryboardを使用したら画面を作りやすくて感動しました。
上手く使えるように頑張ろう。