iPhone: та же нижняя панель для нескольких просмотров - PullRequest
0 голосов
/ 10 февраля 2012

Я хотел бы добавить нижнюю панель в виде, а затем оставить ее там, пока я просматриваю несколько видов (в каждом из которых есть панель с надписями).Я надеюсь, что он будет следовать рекомендациям Apple (я уже знаю, что рекомендуется использовать только панель nab) или, по крайней мере, приложение будет принято.Для этого я добавил UIView в окно приложения.Этот UIView содержит UITabBarController, который содержит контроллеры навигации (каждый из которых является rootviewController) каждого из элементов панели:

UIWindow *window=[[UIApplication sharedApplication] keyWindow];
MyUIViewController *mv=[[MyUIViewController alloc]init];
UINavigationController *navd = [[UINavigationController alloc] initWithRootViewController:mv];
navd.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"MyItem" image:[UIImage imageNamed:@"myImage.png"] tag:0];
NSMutableArray *controllers = [[NSMutableArray alloc] init];
[controllers addObject:navd];
UITabBarController *tbarController=[[UITabBarController alloc] init]; 
tbarController.viewControllers = controllers; 
tbarController.customizableViewControllers = controllers;
UIView *vistaBarraInferior=tbarController.view;
[window addSubview:vistaBarraInferior]; 
[window makeKeyAndVisible];

Это работает, но моя проблема возникает, когда я хочу вернутьсяи выйдите из ivies с помощью UITabBarController.Если я напишу:

[self.tabBarController.view removeFromSuperview];
[self.parentViewController.navigationController popViewControllerAnimated:YES];

Панель вкладок удаляется из текущего представления, но я не могу перейти к предыдущему представлению (основному представлению, которое у меня было до того, как что-либо делать), потому что я перезаписал его'initWithRootViewController'.

Есть ли какой-либо другой способ упростить или сделать это?

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 10 февраля 2012

Если вы хотите объединить панель вкладок и панель навигации, вы должны использовать панель вкладок в качестве корневого элемента и для каждого элемента вкладки добавить один контроллер навигации.Вы не можете сделать это противоположным образом, так как панель вкладок всегда должна быть root.

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

Если вы хотите создать что-то наподобие наложенной панели инструментов - то, что всегда находится над представлениями, даже если они анимируются во входе и выходе - вам нужно выбрать другое решение.,

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

1 голос
/ 10 февраля 2012

Вы должны использовать tabbarcontroller с массивом навигационных контроллеров. См. Пример кода яблока здесь , например.

Я просмотрел ваш код, и он не выглядит правильным на разных уровнях. Например, вы вызываете initwithviewcontroller, но передаете uiview. Это не правильно.

0 голосов
/ 13 февраля 2012

Если я переписываю этот код другим способом:

        UITabBarController *tabBar=[[UITabBarController alloc]init];
        tabBar.title=@"MyTitle";
        NSMutableArray *items=[[NSMutableArray alloc]init];
        MyUIViewController *ld = [[MyUIViewController alloc] init];
        [tabBar addChildViewController:ld];            
        UITabBarItem *tabItem=[[UITabBarItem alloc]initWithTitle:@"Item1" image:[UIImage imageNamed:@"myImage.png"] tag:0];
        [items addObject:tabItem];
        [tabItem release];
        [tabBar setToolbarItems:items];
        [self.navigationController pushViewController:tabBar animated:YES];

В результате панель вкладок внизу пуста. Я забыл написать что-нибудь еще, чтобы показать элемент панели вкладок?

Если я добавляю второй элемент, отображается только его заголовок, но не отображается ни его изображение, ни что-либо, связанное с первым элементом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...