2015-01-15 5 views
1

Я пытаюсь использовать drop-in, чтобы иметь Gradient в моем UINavigationBar в моем приложении. Я нашел его в https://github.com/chroman/CRGradientNavigationBarПользовательская панель навигации, предоставляющая мне двойную навигационную панель iN View

Мое приложение - это приложение для панели управления планшетами, в котором каждая вкладка является навигационным контроллером. У меня есть код, заданный как:

UINavigationController *navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[CRGradientNavigationBar class] toolbarClass:nil]; 

UIColor *firstColor = [UIColor colorWithRed:255.0f/255.0f green:42.0f/255.0f blue:104.0f/255.0f alpha:1.0f]; 
UIColor *secondColor = [UIColor colorWithRed:255.0f/255.0f green:90.0f/255.0f blue:58.0f/255.0f alpha:1.0f]; 

NSArray *colors = [NSArray arrayWithObjects:firstColor, secondColor, nil]; 
// or NSArray *colors = [NSArray arrayWithObjects:(id)UIColorFromRGB(0xf16149).CGColor, (id)UIColorFromRGB(0xf14959).CGColor, nil]; 

[[CRGradientNavigationBar appearance] setBarTintGradientColors:colors]; 
[[navigationController navigationBar] setTranslucent:NO]; // Remember, the default value is YES. 

[navigationController setViewControllers:@[tabBarController]]; 

[self.window setRootViewController:navigationController]; 

Однако я получаю двойную панель навигации, с заголовком и uibarbuttonitems добавляется к 2-м, а не градиент один. Какие-либо предложения?

ответ

0

UITabBarController не должен быть rootViewController a UINavigationController. Попробуйте настроить tabBarController как RootViewController окна, например, так:

[self.window setRootViewController:tabBarController]; 

Тогда вы хотите, чтобы заполнить массив viewControllers на контроллере панели вкладок с навигационными контроллерами, что приводит к каждой вкладке получает свою собственную навигационную панель и вид стека контроллера:

UINavigationController *navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[CRGradientNavigationBar class] toolbarClass:nil]; 
[tabBarController setViewControllers:@[navigationController]]; 

Это приведет к контроллеру бар вкладки с одной вкладки, показанной в нижней части, и навигационной панели в верхней части для этой вкладки. Если вы хотите больше вкладок, просто добавить несколько экземпляров вид контроллера в массиве viewControllers вы установили на tabBarController:

UINavigationController *navigationController1 = [[UINavigationController alloc] initWithNavigationBarClass:[CRGradientNavigationBar class] toolbarClass:nil]; 
UINavigationController *navigationController2 = [[UINavigationController alloc] initWithNavigationBarClass:[CRGradientNavigationBar class] toolbarClass:nil]; 
UINavigationController *navigationController3 = [[UINavigationController alloc] initWithNavigationBarClass:[CRGradientNavigationBar class] toolbarClass:nil]; 
[tabBarController setViewControllers:@[navigationController1,navigationController2,navigationController3]]; 

Каждый из этих навигационных контроллеров собираются начать, по крайней мере, 1 UIViewController в стеке, например, так:

UINavigationController *navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[CRGradientNavigationBar class] toolbarClass:nil]; 
UIViewController* viewControllerForNavigationController = [UIViewController new]; 
[navigationController setViewControllers:@[viewControllerForNavigationController]]; 
+0

Это именно то, что у меня есть. Мой корень - это контроллер панели вкладок. На каждой вкладке есть контроллер навигации. Моя проблема заключается в том, что при добавлении этого подкласса NavigationBar из github он не заменяет навигационную панель навигационного контроллера для каждой вкладки, а просто добавляет новую поверх нее. – user717452

+0

Извините, что я вношу изменения в этот комментарий –

+0

В коде, который вы указали, кажется, что контроллер панели вкладок является контроллером вида на вашем навигационном контроллере, а ваш навигационный контроллер настроен на контроллер корневого представления вашего окна: [navigationController setViewControllers: @ [tabBarController]]; [self.window setRootViewController: navigationController]; –

Смежные вопросы