2013-05-13 3 views
0

Я смотрю на изменение графика на TabBar, такие какменяющиеся изображения TabBar когда TabBar не корневые вид

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 
UITabBar *tabBar = tabBarController.tabBar; 
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0]; 
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1]; 
UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2]; 
UITabBarItem *tabBarItem4 = [tabBar.items objectAtIndex:3]; 
tabBarItem1.title = @"Home"; 
tabBarItem2.title = @"Maps"; 
tabBarItem3.title = @"My Plan"; 
tabBarItem4.title = @"Settings"; 

У меня проблема в том, что мой tabbarcontroller не мой взгляд корень, так как я могу ссылаться на tabbarcontroller для изменения изображений вкладки?

Я следую предложению из этого сообщения (Can I have more than 1 UITabBarController?), которое ссылается на наличие табличного представления, которое ссылается на один или несколько элементов управления табло.

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

У меня все это работает, с начальным экраном, а затем с панелью вкладок, и все работает нормально, мне просто нужно изменить графику на панели вкладок, и я не могу это сделать, поскольку все учебники по изменению Графики панели вкладок используют делегат приложения и ссылаются на панель управления tabbar в качестве корневого представления.

Любая помощь в этом очень ценится!

+0

Элементы панели вкладок относятся к контроллеру вида на каждой вкладке, поэтому вы должны изменить их внешний вид там, а не в контроллере панели вкладок. – rdelmar

+0

Я пытаюсь настроить внешний вид панели вкладок в делегате приложения, но я не могу правильно ссылаться на контроллер панели вкладок в делегате приложения. – Richard

+0

Дело в том, что это неправильный способ сделать это. Вы должны сделать это в awakeFromNib или initWithCoder: методы отдельных контроллеров представления. – rdelmar

ответ

2

Элементы панели вкладок относятся к отдельным контроллерам представления контента на каждой вкладке, поэтому вместо того, чтобы ссылаться на контроллер панели вкладок, вы должны изменить свойства элемента табуляции в этих контроллерах. Если вы хотите, чтобы эти изменения были видны, как только экран панели управления появится на экране, вам нужно поместить эти настройки в свои методы awakeFromNib или initWithCoder (для контроллеров, настроенных в IB).

0

Ричард,

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

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

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

На самом деле, если вы используете IB (XIB или раскадровки), вы можете просто настроить свои значки там.

+0

Я установил контроллер панели в IB, и я знаю, что могу устанавливать значки там, но я также хочу изменить визуальные эффекты панели вкладок больше, чем позволяет IB - изменение фона и т. Д. – Richard

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