Я использовал Storyboard для настройки своего UITabBarController и соответствующего ему ViewControllers. Всякий раз, когда вкладка не выбрана, она становится серой, когда она выбрана, имеет зеленый оттенок. Я бы хотел, чтобы один из этих UITabBarItems всегда выглядел одинаково: т.е. он всегда имел зеленый оттенок, независимо от того, выбран он или не выбран.
Кроме того, изображение значка, которое я использую для этого UITabBarItem, уже имеет желаемый зеленый цвет. Это важно, потому что я пробовал использовать этот метод в функции viewDidLoad функции ViewController UITabBarItem, которую я хотел бы оставить прежней (я уже установил outlet между UITabBarItem в раскадровке и ViewController):

myTabBarItem.image = UIImage(named: "PickleTabIcon").imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)

Это отлично работает, но не активируется, пока ViewController загружается, поэтому пользователь должен нажать на TabItem, чтобы загрузить ViewController, прежде чем это сработает.
Я также попытался получить доступ к изображению UITabBarItem из исходного ViewController, чтобы изменения вступили в силу, как только приложение будет запущено, например:
< br /> tabBarController.tabBar.items[2].image

Но это вызывает ошибку и сообщает, что этот API устарел. Изменение .image на .setImage не означает, что API устарел, но, тем не менее, вызывает ошибку (неопознанный селектор).

Если у вас есть дополнительные вопросы, не стесняйтесь их задавать. Заранее спасибо!
Я использую Swift в XCode 6 Beta 6.

3
dcgoss 25 Авг 2014 в 20:28

1 ответ

Лучший ответ

tabBar.items - это массив AnyObject. Попробуйте передать объект на UITabBarItem

var myTabBarItem = tabBarController.tabBar.items[2] as UITabBarItem
myTabBarItem.image = UIImage(named: "PickleTabIcon").imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
8
Moon Cat 25 Авг 2014 в 20:45
Великолепно !! Спасибо за быстрый ответ.
 – 
dcgoss
25 Авг 2014 в 20:48