программно создать контроллер splitview с двумя контроллерами uiview, которые используют контроллеры навигации - PullRequest
2 голосов
/ 31 марта 2011

Я хотел бы создать UISplitViewController программно и иметь в качестве основного и подробного контроллера (левая и правая панели) два подкласса UIViewController, которые я использую для обработки различных вещей, таких как обработка, когда выделены ячейки и т. Д.

Моя проблема в том, что я не уверен, как создать навигационные контроллеры в этих пользовательских контроллерах master и detail и подключить их к контроллеру splitview. В настоящее время я добавляю свои контроллеры так:

mSplitViewController.viewControllers = [NSArray 
    arrayWithObjects:mSplitMasterController,mSplitDetailController, nil];

и у меня в каждом настраиваемом контроллере есть контейнер UIView, на котором я могу собрать свои подпредставления. Я не уверен, как добавить навигационные контроллеры к ним. Нужно ли мне делать что-то подобное в loadView моих пользовательских контроллеров?

[self.view addSubview:mNavigationController.view];

после создания контроллеров (и их представлений), которыми будет управлять контроллер навигации?

1 Ответ

0 голосов
/ 23 августа 2011

Вам не нужны контейнеры UIView. Если вы хотите использовать контейнеры, вам понадобятся UIViewControllers. В любом случае, просто добавьте контроллер навигации в массив напрямую. Позже вы можете получить к ним доступ из одного и того же массива, чтобы вставить и вставить другое разделенное представление.

RootViewController* rootViewController = [[RootViewController alloc] init];
navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
[rootViewController release];

splitVC = [[UISplitViewController alloc] init];

[window addSubview:splitVC.view];

TempViewController* tempViewController = [[TempViewController alloc] initWithNibName:@"TempViewController" bundle:nil];
detailNavController = [[UINavigationController alloc] initWithRootViewController:tempViewController];
[tempViewController release];

splitVC.viewControllers = [NSArray arrayWithObjects:navController, detailNavController, nil];
...