どれがいいのか。
参考1全部コードだと、レイアウトを作成するコードが長くて面倒くなる。
ので、複雑な画面は単体でxibを使う
UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor darkGrayColor];
label.textAlignment = UITextAlignmentCenter;
label.frame = CGRectMake(10.f, 10.f, 100.f, 100.f);
ストーリーボードを使うと、
・分業しにくい
・対応するコードを探しにくい
・どこに何が定義されてるか分かりにくくなる
なので、ビューが複雑でしかも小さい範囲で
参考2引用
ViewControllerは理想的には極限まで薄くするのがいいと思います。
ビジネスロジックはModelに書く、汎用処理はヘルパークラスや関数にする、DataSourceは切り離す、などいろいろありますが、Viewも別クラスに切り離しましょう。
MVC忘れずに
今の時点での答えは
・ストーリーボード使わない
・xibだけに留める
・いずれにせよViewとViewControllerはちゃんと分けて書く
脱・ストーリーボードの方法
1.
ストーリーボードファイルを削除(参照だけでなく実体も)
2.
Info.plistの"Main storyboard file base name"を削除。
3.
さらに以下のように記述する
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var viewController: UIViewController?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window!.backgroundColor = UIColor.whiteColor()
self.viewController = RootViewController() // 自分で作成したViewController
self.window!.rootViewController = self.viewController
self.window!.makeKeyAndVisible()
return true
}
ViewController周りを追記すること。
なぜか分からないが、プロジェクトテンプレートをEmptyにして以上の記述を追記すると、ViewControllerのLoadViewやviewDidLoad関数が何回も呼び出される。
ストーリーボード付きのテンプレートから作成し、ストーリーボードを削除すると、同じ記述でも正しく動く(一度しか呼び出されない)。
参考いったいなんぞこれ。
PR