0

以前のバージョンの Xcode では、ウィンドウベースのユニバーサル アプリケーションを作成すると、プロジェクトに iPhone および iPad 固有のファイルが取り込まれ、適切なエントリ ポイントが割り当てられていました。必要だったのは、デバイス固有のインターフェイスを作成するために iPhone/iPad コントローラー/xibs を変更することだけでした。

悲しいことに、XCode 4.3 ではウィンドウ ベースのテンプレートが提供されなくなり (空のアプリケーションが最も近い)、エントリ ポイントを適切に構成する方法がわかりません。これはstoryboardingを使用してかなり簡単ですが、プログラムまたは xib ベースのワークフローを使用して実行したいと思います。

2 つのビュー コントローラーと xib を作成しました:HomeViewController_iPhoneHomeViewController_iPad. 各デバイスのエントリ ポイントを適切な HomeViewController に設定するだけで、アプリがクラッシュします。アプリケーション デリゲートをサブクラス化するには、もう少し手を加える必要があると思いますが、どうすればよいかよくわかりません。ポインタはありますか?

4

1 に答える 1

2

これは、ナビゲーションコントローラーを使用するときに行うことと似ています。デバイスに応じて、コードは正しい xib をロードします。これは にdidFinishLaunchingWithOptions入りAppDelegate.mます。 navigationControllerのプロパティですAppDelegate.h

UIViewController *rootViewController;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    rootViewController = [[HomeViewController_iPhone alloc] initWithNibName:@"HomeViewController_iPhone" bundle:nil];
}
else {
    rootViewController = [[HomeViewController_iPad alloc] initWithNibName:@"HomeViewController_iPad" bundle:nil];
}

navigationController = [[UINavigationController alloc]
                 initWithRootViewController:rootViewController];

self.window = [[UIWindow alloc] 
               initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;

それが解決に役立つことを願っています!

于 2012-04-02T15:56:37.423 に答える