У меня возникли проблемы с пониманием того, как все «гайки и болты» шаблона приложения Master-Detail работают с использованием Xcode 4.2 (без MainWindow.xib, а также других изменений).В «AppDelegate» у нас есть следующий код:
- (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;
}
Я вижу, что окно создается программно вместо использования MainWindow.xib, который использовался в предыдущих версиях XCode в начале, а также создания экземпляровобъекты для классов контроллера «Master» и «Detail», которые предоставляются вместе с шаблоном и используют их для отдельных UINavigationControllers.Затем свойству splitViewController назначается новый выделенный объект UISplitViewController, назначающий detailViewController в качестве «делегата», и создается массив, который содержит оба UINavigationControllers как «viewControllers».Затем объекту window.rootViewController назначается этот объект splitViewController.
Основные вопросы, которые у меня возникают
1) Зачем мне нужны два "UINavigationControllers?"Не могу ли я просто создать массив «viewController», используя сами «основные» и «подробные» контроллеры представления? »
2) Что он делает, устанавливая« detailViewController »в качестве« делегата »? Что на самом делеполучает делегирование?
3) И, наконец, если бы я хотел поместить дополнительные элементы в стек DetailViewController, я бы просто использовал класс DetailViewController, чтобы протолкнуть с помощью метода didSelectRow .., илиВместо этого мне нужно обновить свойство self.splitViewController.viewControllers?