2014-10-23 2 views
0

Я использую это:Настройка UIBarButtonItem Apperance с несколькими видами UINavigationBar

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil] 
setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
         color ,NSForegroundColorAttributeName, 
         FONT(FONT_REGULAR, 15.0f), NSFontAttributeName, 
         nil] forState:UIControlStateNormal]; 

Чтобы установить цвет кнопки в UINavigationController на viewWillAppear: методов. Мое приложение имеет 5 основных видов, каждый с UINavigationController сгруппирован под UITabBar.

Проблема в том, что когда я переключаюсь между UITabBar видами, он сошел с ума и всегда применяет последний инициализированный цвет представления ко всем другим представлениям. Я проверяю триплексный код, когда я меняю его с помощью правильных параметров, он просто не влияет на существующие кнопки.

Есть ли другой способ установить цвет отдельно для разных UINavigationController s?

ответ

0

Не используйте метод appearanceWhenContainedIn:, он изменяет внешний вид всех экземпляров класса. В вашей ситуации этот класс - UIBarButtonItem. И вы делаете это в viewWillAppear: методе снова и снова, что вызывает изменение цвета всех ваших объектов UIBarButtonItem.

Этот вопрос дает ответ на ваш вопрос:

iOS 6 appearance when contained in multiple classes

EDIT:

В качестве решения можно использовать tintColor свойство для точного UIBarButtonItem объекта.

myBarButtonItem.tintColor = [UIColor blueColor]; 
+0

Но я хочу изменить его снова и снова, просто для разных цветов на разных вкладках. Как я могу это изменить? –

+0

использование ** оттенокColor ** свойство для точный ** UIBarButtonItem ** объект – Shamsiddin

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