UINavigationController, нажимающий UITabBarController, отображает только одну вкладку

У меня есть приложение, в котором UITabBarController создано в IB. Этот tbc загружает 3 представления, которые до сих пор работают нормально.

Я решил ВСТАВИТЬ UINavController в качестве начального VC и UITableViewController отображать 4 пункта меню в ячейках. Каждый из 4 элементов, по сути, загрузит проход UITabBarController put в другой XML-файл для обработки, чтобы отобразить данные на этих 3 вкладках.

По сути, я сделал это в конце applicationDidFinishLoading:

MainMenu *rootViewController = [[MainMenu alloc] init];
navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.window.rootViewController = navController;
[window makeKeyAndVisible];
return YES;

Затем я создал MainMenu как подкласс rootViewController UITableViewController и на данный момент добавил жестко закодированный массив, который отображает 4 элемента, которые я хочу. Я заставил didSelectRowAtIndexPath запустить этот код:

tabBarController = [[UITabBarController alloc] init];
[self.navigationController pushViewController:tabBarController animated:YES];
[tabBarController release];

Оказывается, когда я запускаю его, navcontroller нажимает контроллер вкладок, но отображается только первая вкладка. Вот картинка.

введите здесь описание изображения


person marciokoko    schedule 19.01.2012    source источник


Ответы (1)


Вы никогда не должны выталкивать UITabBarController из UINavigationController. Apple четко говорит об этом:

Приложение, использующее контроллер панели вкладок, также может использовать контроллеры навигации на одной или нескольких вкладках. При объединении этих двух типов контроллеров представления в одном пользовательском интерфейсе контроллер панели вкладок всегда выступает в качестве оболочки для контроллеров навигации.`

По сути, это означает, что панель вкладок должна быть родительской для всех других вызываемых контроллеров представления. Не наоборот. Вероятно, вам следует изменить способ представления вашего приложения.

Дополнительная информация здесь.

person Ravi    schedule 19.01.2012
comment
Проверьте новое приложение Apple, они, похоже, вставляют UITabBarController в UINavigationController. - person msk; 15.10.2015
comment
не могли бы вы обновить ссылку? видимо уже недействительно. - person Yuchen; 16.09.2016