2014-11-26 4 views
0

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

Я хочу иметь все вкладки с черным фоном и белым значком с белым текстом. И когда вы просматриваете их, выбранная вкладка изменяется так, что она имеет красный фон с белым значком и названием. Сейчас у меня одинаковое изображение на всех вкладках для тестирования. Но у них будут все разные образы.

Теперь моя проблема в том, что кажется, что этот код игнорируется и появляется «оригинал» (с настройками из раскадровки). Ничего не меняется, кроме случаев, когда я изменяю значения в раскадровке.

Я стараюсь, чтобы установить их в didFinishLaunchingWithOptions в моем файле AppDelegate как таковой:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
UITabBarController *tc = [mainStoryboard instantiateViewControllerWithIdentifier:@"tabbar"]; 

UITabBar *tabBar = tc.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]; 
UITabBarItem *tabBarItem5 = [tabBar.items objectAtIndex:4]; 

tabBarItem1.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem1.image = [[UIImage imageNamed:@"ikon_clubkort"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem1.title = @"xxxx"; 

tabBarItem2.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem2.image = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem2.title = @"xxxx"; 

tabBarItem3.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem3.image = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem3.title = @"xxxx"; 

tabBarItem4.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem4.image = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem4.title = @"xxxx"; 

tabBarItem5.selectedImage = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem5.image = [[UIImage imageNamed:@"ikon_clubkort"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; 
tabBarItem5.title = @"xxxx"; 

return YES; 
} 

Любая идея, что я делаю не так?

ответ

2

Из того, что я читал, в основном вы создаете контроллер панели управления программным способом, но не отображаете его.

Вы можете сделать 2 вещи:

  1. Установите созданный Tab Bar контроллер в качестве контроллера зрения корень делегата, поставив это в конце application:didFinishLaunchingWithOptions:

    self.window.rootViewController = tc

  2. Создать подкласс UITabBarController, введите код настройки элемента панели вкладок, который вы использовали в методе нового класса 'viewDidLoad, и назначьте класс контроллеру вида в раскадровке.

+0

Если я установил self.window.rootViewController = tc, мой синглтон будет сброшен. Любые решения? – user1385341

+0

Извините, какой синглтон? В любом случае, я бы порекомендовал второй вариант по сравнению с первым. – remingtonspaz

+0

У меня есть одноэлементный объект, который сохраняет данные пользователя, но синглтон никогда не устанавливается, потому что если я устанавливаю self.window.rootViewController = tc, мой класс входа пропускается. Он просто перепрыгивает прямо в первое окно вкладки. Если я не устанавливаю self.window.rootViewController = tc, приложение запускается на странице входа в систему. – user1385341