Я пытаюсь сделать что-то похожее на (но не совсем похожее) почтовое приложение , найденное на iPad .
В частности, я хотел бы создать приложение на основе вкладок , но на каждой вкладке пользователю будет свой UISplitView .
Каждый UISplitView содержит представление Master и Detail (очевидно).
В каждом UISplitView я бы хотел, чтобы Master был многоуровневым навигационным контроллером , где новые UIViewController помещаются (или извлекаются) из стека. Этот тип навигации в UISplitView - то, где приложение подобно родному приложению электронной почты.
Насколько мне известно, единственное место, где описан приличный "splitviewcontroller внутри uitabbarcontroller", находится здесь: UISplitViewController в TabBar (UITabBarController)? и я пытался следовать принят ответ.
Кажется, что принятое решение работает для меня (т.е. я получаю контроллер панели вкладок, который позволяет мне переключаться между различными UISplitViews).
Проблема в том, что я не знаю, как сделать левую часть UISplitView многоуровневым навигационным контроллером.
Вот код, который я использовал в своем делегате приложения для создания начального «разделенного представления» внутри «контроллера панели вкладок» (это в значительной степени соответствует предложению в вышеупомянутой ссылке).
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSMutableArray *tabArray = [NSMutableArray array];
NSMutableArray *array = [NSMutableArray array];
UISplitViewController *splitViewController = [[UISplitViewController alloc] init];
MainViewController *viewCont = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
[array addObject:viewCont];
[viewCont release];
viewCont = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
[array addObject:viewCont];
[viewCont release];
[splitViewController setViewControllers:array];
[tabArray addObject:splitViewController];
[splitViewController release];
array = [NSMutableArray array];
splitViewController = [[UISplitViewController alloc] init];
viewCont = [[Master2 alloc] initWithNibName:@"Master2" bundle:nil];
[array addObject:viewCont];
[viewCont release];
viewCont = [[Slave2 alloc] initWithNibName:@"Slave2" bundle:nil];
[array addObject:viewCont];
[viewCont release];
[splitViewController setViewControllers:array];
[tabArray addObject:splitViewController];
[splitViewController release];
// Add the tab bar controller's current view as a subview of the window
[tabBarController setViewControllers:tabArray];
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
return YES;
}
класс MainViewController - это UIViewController, который содержит следующий метод:
- (IBAction)push_me:(id)sender {
M2 *m2 = [[[M2 alloc] initWithNibName:@"M2" bundle:nil] autorelease];
[self.navigationController pushViewController:m2 animated:YES];
}
этот метод присоединяется (через конструктор интерфейса) к UIB-кнопке, найденной в MainViewController.xib
Очевидно, что описанный выше метод (push_me) должен создать второй UIViewController (называемый m2) и выдвинуть m2 в вид слева от разделенного вида при нажатии кнопки UIB.
И все же он ничего не делает при нажатии кнопки (хотя я могу сказать, что метод вызывается).
Мысли о том, где я иду не так?
ТИА!