2011-10-24 14 views
9

Xcode 4.2を使用してあらゆるタイプのiOS 5.0開発を行う前に、Xcodeはテンプレートに「MainWindow.xib」を提供しました。 iOS 5.0を使用してXcode 4.2をダウンロードして再生した後、提供されたテンプレートに「MainWindow.xib」ファイルが含まれていないことに気付きました。これはもう必要ですか? App_Delegateの "application didFinishLaunchingWithOptions"メソッドで、テンプレートに "UIWindow"を作成するコードが含まれていることがわかりました。ナビゲーションコントローラがあれば、それに従ってウィンドウが更新されます。iOSアプリケーションにMainWindow.xibが本当に必要ですか?

// code that was pulled from a Master Detail application template 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 

    MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil]; 
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController]; 
    self.window.rootViewController = self.navigationController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

私は私の質問があると思い、私はもはや「MainWindow.xib」を必要とするか、そしてもしそうなら、なぜアップルのテンプレートは、それらを除外していますか?

答えて

4

私は今や欠けている理由は、プログラムでウィンドウを作成する方が、xibファイルを開いてオブジェクトをアーカイブに保存するよりもずっと効率的だと思います。一般的に、コードの1行で行うことができれば、コード内で行う必要があります。

MainWindow.xibを使わずに古いプロジェクトを手動で変更する方法については、Matthew Gillinghamの答えをお読みください。

+0

「MainWindow.xib」をバイパスするだけで、将来のすべてのプロジェクトに行くことができると思いますか? – 5StringRyan

+2

はい、ウィンドウに表示される最初のものは、とにかくビューコントローラーによって管理されるため、私は常にすべてのプロジェクトに対してプログラムでウィンドウを作成します。ウインドウだけを持っているxibを持っていても何の利点もありません。 – Costique

15

MainWindow.xibを使用しないオプションが常にあります。 UIWindowを行うことで、プログラムでロードすることができ、以下:main.mでUIApplicationMainの呼び出しは次のようになりますことを確認すること

1):

UIApplicationMain(argc, argv, nil, @"MyAppDelegateClassName"); 

むしろこれより:

UIApplicationMain(argc, argv, nil, nil); 

2)Info.plistのメインnibファイルに "MainWindow.xib"の値がないことを確認します。

3)UIWindowをプログラムデリゲートに読み込みます。

だから、あなたはMainWindow.xibを使う必要はなく、実際には決して持っていません。あなたは常にプログラム的にやることができます。

アップルがデフォルトのXcode設定でこの変更を加えた理由はよく分かりますが、その答えはわかりません。しかし、パフォーマンスやARCへの移行、アプリケーションファイルサイズの縮小などが必要な場合があります。

+0

カップルの長所と短所を提供することは可能ですか?私は、 "MainWindow.xib"の使用方法や使用方法について最善の策を探しています。 – 5StringRyan

+0

私はそれについて考えてきましたが、私は実際にあまりにも多くのプロと一緒に来る問題を抱えています。 Interface Builderでコンテナビューを操作できるので、タブバーベースのアプリケーション(またはナビゲーションコントローラ)をビジュアルファッションでセットアップすることができたと思います。テンプレートで新しいタブバーアプリケーションを作成すると、タブバーはコード内にのみ存在します。しかし、Interface Builderを使ってView Controllerを作成して使用することはまだ簡単なので、多くのことが失われていると思うのは難しいです。私はおそらく、MainWindow.xibを使わずに前進するだろう。 –

2

MainWindow.xibの使い方について、私はいつも混乱しています。それでも、ウィンドウのrootViewControllerまたはaddSubviewを設定する必要があります。その情報はMainWindow.xibに含まれていませんか?なぜ私はまだそれについて窓に伝える必要があるのですか?

MainWindow.xibを削除すると意味があるようです。

関連する問題