3

iPhone用の日記アプリケーションを作成しましたが、ユニバーサル(iPhoneとiPad)にしたいです。

アプリケーションがiPadで起動するとき、分割ビューコントローラーを使用するようにします。

私には2つのクラスがあります。1つ目は「Rootviewcontroller」で、2つ目は「Detailview」コントローラーです。どちらのクラスでも、ナビゲーションコントローラーを使用しています。iPhoneでは、アプリケーションを起動すると、rootviewcontrollerが表示されます。ナビゲーションコントローラーを使用して、ユーザーは詳細ビューに移動できます。

iPadでは、ルートビューコントローラーを分割ビューコントローラーの左側に配置し、詳細ビューを右側に配置する必要があります。

4

2 に答える 2

4

Appleのドキュメントを確認する場合は、UISplitViewControllerを初期化するときに2つのViewControllerを割り当てるだけです。Appleドキュメントへのリンクは次のとおりです-http://developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewController_class/Reference/Reference.html

これが私たちが持っている実際のiOSアプリケーションの例です(理解しやすいようにいくつかの変数名を変更しました)。基本的に、デバイスがiPadであるかどうかを判断し、マスターナビゲーションコントローラーを構築します。

detailNavは、「アイテムの詳細ビューコントローラー」で作成されたナビゲーションコントローラーです。

masterNavは、iPhoneで使用されるナビゲーションコントローラーです。これにより、ユーザーはtableViewで起動し、アイテムを選択して詳細ビューに進むことができます。

これらの両方を配列に割り当て、分割ビューコントローラーを初期化します。

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
    UINavigationController *detailNav = [[UINavigationController alloc] initWithRootViewController:detailVC];
    NSArray *vcs = [NSArray arrayWithObjects:masterNav, detailNav, nil];
    UISplitViewController *splitViewController = [[UISplitViewController alloc] init];
    [splitViewController detailVC];
    [splitViewController setViewControllers:vcs];
    [[self window] setRootViewController:splitViewController];
} else {
    [[self window] setRootViewController:masterNav];
}

私と私のチームはまだiOSの世界にかなり慣れていないので、これはおそらくベストコードまたはベストプラクティスではありませんが、それが役立つことを願っています。このコードは、本番環境のライブアプリで実行されています。

于 2012-06-06T14:38:09.743 に答える
1

これを行う方法に関するアップルのドキュメントは次のとおりです。http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html

分割ビューを実装するには、iPad View Controllerにあります。分割ビューのある側を変更する場合は、サブクラス化して右側に再描画できます。お役に立てれば!

于 2012-06-06T14:34:02.827 に答える