Мой viewcontroller (в navcontroller), который я загружаю в мой делегат приложения, перекрывает панель вкладок - PullRequest
0 голосов
/ 12 апреля 2011

У меня проблемы с инициализацией viewcontroller, когда приложение загружается в мой делегат приложения. Viewcontroller загружается нормально, но он перекрывает панель вкладок, которая у меня внизу. Нужно ли создавать другой viewcontroller и загружать его в делегат приложения? В настоящее время у меня настроен tabBarController в моем MainWindow.xib, который содержит контроллеры Navigation и внутри них - viewControllers.

Вот мой код ...

В моем didFinishLaunchingWithOptions у меня есть:

sub = [[SubGabViewController alloc] initWithNibName:@"SubGabViewController" bundle:nil];
nav = [[UINavigationController alloc] initWithRootViewController:sub];
[window addSubview:nav.view];

Должно ли это быть что-то вроде?

sub = [[SubGabViewController alloc] initWithNibName:@"SubGabViewController" bundle:nil];
nav = [[UINavigationController alloc] initWithRootViewController:sub];
[newViewController.view addSubview:nav.view];

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 апреля 2011

Если вы пытаетесь использовать UITabBarController, каждая вкладка имеет свой собственный контроллер корневого представления (это могут быть даже объекты UINavigationController).Предполагая, что у вас есть свойство для self.tabBarController (я думаю, что оно создается по умолчанию в Xcode, если вы делаете приложение с панелью вкладок), тогда:

sub = [[SubGabViewController alloc] initWithNibName:@"SubGabViewContrller" bundle:nil];
nav = [[UINavigationContoller alloc] initWithRootViewController:sub];
[self.tabBarController setViewControllers:[NSArray arrayWithObject:nav] animated:NO];
self.window.rootViewController = self.tabBarController;
// Clean up memory here... only if you don't need references to them
[sub release];
[nav release];

С setViewControllers: animated: вам, вероятно, следует включитьдополнительные контроллеры представления в NSArray, иначе вы получите панель вкладок, содержащую только один элемент!

0 голосов
/ 12 апреля 2011

[window addSubview:tabBarController.view]; было бы правильно ......

Вместо добавления контроллера навигации с использованием кода ..... вы должны добавить его из Interface Builder .... в построителе интерфейса удалите tabBarItem и добавьте navigationController к нему, а затем установите viewController для этого навигационный контроллер ..........

создайте выход tabBarController в appDelegate, чтобы вы могли добавить его в window. Пожалуйста, не забудьте установить соединение между компонентами в Интерфейсном Разработчике.

Спасибо

...