кнопка возврата в панели навигации меняет цвет после представления навигационного контроллера

Я представляю MFMailComposeViewController следующим образом:

[self presentViewController:composer animated:YES completion:nil];

Кнопка «Отмена» компоновщика почты автоматически принимает цвет

[[UIView appearance] tintColor];

Когда я увольняю композитора почты с помощью:

[controller dismissViewControllerAnimated:YES completion:nil];

кнопка «Назад» (только стандартная стрелка «назад») видимого контроллера меняется с белого на вид tintColor (например, кнопка «Отмена» композитора), и я не могу ее изменить. Мне нужен белый цвет, потому что для фона панели навигации задано значение tintColor.

Кто-нибудь может мне помочь?

Спасибо

РЕШЕНИЕ

В приложении НИКОГДА не устанавливайте свойство [[UIView appearance] tintColor]. Вместо этого установите [[self view] tintColor], когда это необходимо. Все работает, а кнопка BackButton остается белой, как я и хочу.


person Lorenzo Lazzari    schedule 11.09.2014    source источник


Ответы (1)


arrow_upward
2
arrow_downward

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

[[UIView appearance] setTintColor:[UIColor orangeColor]];

Вместо этого попробуйте установить цвет оттенка только для контроллера компоновщика почты, добавив эту строку перед его представлением:

//Set the tint color on just the composer controller as needed here before presenting
[composer.view setTintColor:[UIColor orangeColor]];
person jlichti    schedule 11.09.2014
comment
Этот код изменяет tintColor navBar композитора, но, например, текст получателей получает tintColor контроллера фонового представления. И когда я его закрываю, у меня снова та же проблема с кнопкой «Назад». - person Lorenzo Lazzari; 12.09.2014
comment
Я думаю, проблема в том, что когда я устанавливаю tintColor (в wiewDidLoad), кнопка backButton еще не создана, поэтому она не принимает tintColor и остается белой. После того, как mailCompose представление сбрасывает цвет оттенка, поэтому измените также кнопку «Назад». Есть способ сохранить его белым В ЛЮБОМ СЛУЧАЕ? Я пытаюсь [[Внешний вид UIBarButtonItem] setTintColor:[UIColor whiteColor]]; но не работает. - person Lorenzo Lazzari; 12.09.2014
comment
Хорошо, решено НИКОГДА не устанавливайте цвет оттенка внешнего вида UIVIew, но простой цвет оттенка вида, где мне нужно. Спасибо. - person Lorenzo Lazzari; 12.09.2014