忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/22 19:33 】 |
ストーリーボードか、xibか、コードか
どれがいいのか。


参考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
【2014/06/07 16:37 】 | 未選択 | 有り難いご意見(0)
<<アセットカタログ | ホーム | storyboard>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>