Проблемы пользовательского UITabBarController с контроллерами просмотра и представлениями

StackOverflow https://stackoverflow.com/questions/1432992

Вопрос

Я пишу пользовательский UITabBarController, чтобы я мог полностью контролировать внешний вид панели вкладок.У меня все это работает, поэтому у меня есть массив контроллеров просмотра, которые он обрабатывает.

Контроллер имеет основной вид, который заполняет экран, а внутри него есть UIView внизу для панели вкладок.В этом представлении панели вкладок есть кнопка для каждого контроллера представления.Когда нажимаются кнопки, я добавляю вид контроллера представления к основному виду и устанавливаю его рамку так, чтобы она не закрывала вид панели вкладок:

controller.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - kTabBarHeight);

Все это работает нормально, и я могу просто отлично переключаться между контроллерами просмотра.Однако, когда я представляю контроллер модального представления, а затем отклоняю его, представление текущего контроллера представления становится полноэкранным и закрывает мою панель вкладок!Я пробовал настроить авторазмерные маски так, чтобы они не изменяли размер, но это продолжает происходить.

Я также попытался добавить представление view controllers в нижней части (под панелью вкладок), используя:

[self.view insertSubview:controller.view atIndex:0];

Но когда я это делаю, панель вкладок видна даже над любыми модальными представлениями!Что странно.Я думаю, что есть что-то, чего я не понимаю, поэтому я был бы благодарен, если кто-нибудь сможет объяснить, чего мне не хватает!

Спасибо,

Майк

Это было полезно?

Решение 3

Мне удалось найти лучший способ управлять внешним видом панели вкладок, просто вставив вложенные представления в верхнюю часть панели вкладок контроллеры вкладок.Это сработало на славу!

Другие советы

Попробуйте установить

controller.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - kTabBarHeight); 

в методе viewWillAppear контроллера

Попробуй это.Я думаю, вам нужны контроллеры динамического просмотра внутри контроллера панели вкладок.

-(void)applicationDidFinishLaunching:(UIApplication *)application {

// Add the tab bar controller's current view as a subview of the window
tabBarController.delegate=self;
tabBarController=[[UITabBarController alloc] init];

mainDashBoard=[[DashBoard alloc] initWithNibName:@"DashBoard" bundle:nil];
mainSearchView=[[SearchView alloc] initWithNibName:@"SearchView" bundle:nil];
mainMoreView=[[MoreView alloc] initWithNibName:@"MoreView" bundle:nil];

UINavigationController *nvCtr0=[[[UINavigationController alloc] init] autorelease];
UINavigationController *nvCtr1=[[[UINavigationController alloc] initWithRootViewController:mainDashBoard] autorelease];
UINavigationController *nvCtr2=[[[UINavigationController alloc] initWithRootViewController:mainSearchView] autorelease];
UINavigationController *nvCtr3=[[[UINavigationController alloc] initWithRootViewController:mainMoreView] autorelease];
UINavigationController *nvCtr4=[[[UINavigationController alloc] init] autorelease];//[[[UINavigationController alloc] initWithRootViewController:nil] autorelease];

tabBarController.viewControllers=[NSArray arrayWithObjects:nvCtr0,nvCtr1,nvCtr2,nvCtr3,nvCtr4,nil];

nvCtr0.tabBarItem.enabled=NO;
nvCtr4.tabBarItem.enabled=NO;

[window tabBarController.view];
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top