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
が他にあったとしてもこのやり方でいけました
お疲れ様でした