4

Master-Detailアプリケーションテンプレートのすべての「ナットとボルト」がXcode 4.2(MainWindow.xibやその他変更)。私は窓はなく始まりでのXcodeの以前のバージョンで使用したことMainWindow.xibを使用して、などのためのオブジェクトをインスタンス化のプログラムで作成されていることがわかり新しいXcodeを理解するための助けが必要です4.2 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]; 
    UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController]; 

    DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
    UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController]; 

    self.splitViewController = [[UISplitViewController alloc] init]; 
    self.splitViewController.delegate = detailViewController; 
    self.splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil]; 
    self.window.rootViewController = self.splitViewController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

:「AppDelegate」で私達は次のコードを持っています「Master」と「Detail」の両方は、テンプレートに付属しているコントローラクラスを表示し、別々のUINavigationControllerに使用します。次に、splitViewControllerプロパティには、新規の割り当てられたUISplitViewControllerオブジェクトが割り当てられ、detailViewControllerを「デリゲート」として割り当てます。また、両方のUINavigationControllerを「viewControllers」として含む配列が作成されます。 window.rootViewControllerには、このsplitViewControllerオブジェクトが割り当てられます。

私は

1ですしている主な質問)なぜ私は2つ必要です "UINavigationControllersは?"

2)「デリゲート」として「detailViewController」を設定するのは何ですか?実際に委任されるのは何ですか。 ?

3)最後に、「DetailViewController」スタックに追加項目をプッシュしたい場合は、「DetailViewController」クラスを使用して「didSelectRow ..」メソッドを使用してプッシュするか、代わりにself.splitViewController.viewControllersプロパティへの更新?

答えて

0

1)なぜ2つの "UINavigationControllers"が必要なのですか? "viewControlle "マスター"と "詳細"ビューコントローラ自体を使用して "r"

あなたは必要ありません。しかしそれは方法です。あなたはmasterViewControllerdetailViewControllerを押す能力があります。ストーリーボードのレイアウトを見てください。 segueを使うと、好きなように両側のコントローラを変更することができます。

2)「detailViewController」を「デリゲート」として設定するのは何ですか?実際に委任されるのは何ですか?

UISplitViewゲットが委任されました。 detailViewControllerは、ポートレートモードとランドスケープモードで変化するインターフェイスを処理します。 documentationUISplitViewDelegateを参照してください。

表示と非表示ビューコントローラ

– splitViewController:shouldHideViewController:inOrientation: 
– splitViewController:willHideViewController:withBarButtonItem:forPopoverController: 
– splitViewController:willShowViewController:invalidatingBarButtonItem: 
– splitViewController:popoverController:willPresentViewController: 

3)そして最後に、私はちょうど使用してプッシュする「DetailViewController」クラスを使用することになり、「DetailViewController」スタックに追加アイテムをプッシュしたい場合"didSelectRow .."メソッドを使用するか、代わりにself.splitViewController.viewControllersプロパティの更新を行う必要がありますか?

はい、テーブルビューの選択でmasterViewControllerを押し込むことができます。あなたは

- (void)viewDidAppear:(BOOL)animated 

に押し込んでmasterViewControllerスタックに新しいコントローラのいずれかを押すことができますし、あなたが好きなようにプッシュすることができます。 self.splitViewController.viewControllersプロパティを更新する必要はありません。代理人を新しいdetailViewControllerに設定する必要があるかもしれません。

関連する問題