xibで(から)起動する(Storyboardではなく)[Swift]
Storyboardとxib
Storyboardでの開発は人によって流派が分かれており
・1Storyboardに1画面
・1Storyboardに複数画面→UITabController
とかに使われがち?
Storyboard
じゃなくてxib
でよくね?
→conflict
が起きにくいから
なんてのもあるんだとか。
やり方
xib
から起動させる際のやり方と注意点をまとめました
AppDelegateをいじる
・hogViewController.xib
, hogViewController.swift
の場合を書きます
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
//1: この4行か(navigationControllerつけたい場合はこちら)
self.window = UIWindow(frame: UIScreen.main.bounds)
let navigationController = UINavigationController(rootViewController: hogeViewController())
self.window?.rootViewController = navigationController
self.window?.makeKeyAndVisible() //signal SIGABRT, Console(libc++abi.dylib: terminating with uncaught exception of type NSException)
//2: この3行を追加します
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = hogeViewController(nibName: "hogeViewController", bundle: nil)
window?.makeKeyAndVisible()
return true
}
xib側の設定
・view
をIBOutlet
みたいな方式で繋ぎます(ただし左クリック)
→Placeholders
これやらないとAppDelegate
のclassの行のところでsignal SIGABRT
でクラッシュします
xcode側の設定(注意点)
・プロジェクト名.xcodeproj
→TARGETS
→Deployment Info
→Main Interface
まで移動します
ここが僕がつまづいたところなんですが、自作のStoryboard
作成した時と同じように
気を利かせてhogeViewController.xib
を選択するとAppDelegate
のclassの行のところでsignal SIGABRT
でクラッシュします
(一応選択できてしまうのが落とし穴すぎる。。。w)
以上の3点をクリアしてビルドするとこんなふうにちゃんとできてると思います(画像はnavigationControllerの方を書いた場合です)
→Storyboard
やxib
が他にあったとしてもこのやり方でいけました
お疲れ様でした
参考
Author And Source
この問題について(xibで(から)起動する(Storyboardではなく)[Swift]), 我々は、より多くの情報をここで見つけました https://qiita.com/koutEngineerK/items/f9780c20f0d343f095b2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .