Я пытаюсь настроить UIBarButtonItem
, пока он встроен в UINavigationBar
.Настройка UIBarButtonItem с UIAppearance
Я хотел бы настроить фоновое изображение, а также атрибуты текста заголовка.
Однако, если панель навигации содержится в файле UIPopoverController
, я не хочу, чтобы эти настройки выполнялись.
Это мой код:
//1.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
setBackgroundImage:[UIImage imageNamed:@"navigationBarBackgroundNormal"]
forState:UIControlStateNormal
forBarMetrics:UIBarMetricsDefault];
//2.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
setBackgroundImage:[UIImage imageNamed:@"navigationBarBackgroundHighlighted"]
forState:UIControlStateHighlighted
forBarMetrics:UIBarMetricsDefault];
//3.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
setTitleTextAttributes:@{UITextAttributeTextColor:[UIColor blueColor]}
forState:UIControlStateNormal];
//4.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
setTitleTextAttributes:@{UITextAttributeTextColor:[UIColor whiteColor]}
forState:UIControlStateHighlighted];
//5.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], [UIPopoverController class], nil]
setBackgroundImage:nil
forState:UIControlStateNormal
forBarMetrics:UIBarMetricsDefault];
//6.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], [UIPopoverController class], nil]
setBackgroundImage:nil
forState:UIControlStateHighlighted
forBarMetrics:UIBarMetricsDefault];
//7.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], [UIPopoverController class], nil]
setTitleTextAttributes:nil
forState:UIControlStateNormal];
//8.
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], [UIPopoverController class], nil]
setTitleTextAttributes:nil
forState:UIControlStateHighlighted];
Проблема заключается в том:
создать навигационный контроллер в качестве contentViewController из в пирог.
При нажатии другого регулятора вида автоматически создается обратная кнопка, и внешний вид, который применяется, относится к строкам 5,6,7,8 - что хорошо.
Однако, когда я создаю новый UIBarButtonItem
и назначаю его как rightBarButtonItem
, вместо него применяются строки 3,4,5,6 (что означает, что прокси-сервер внешнего вида по какой-то причине применял атрибуты заголовка из строк 3,4 , хотя панель навигации находится в popover.Однако, когда дело доходит до фонового изображения, внешний вид прокси правильно применял линии 5,6)
Когда навигационная панель не находится в popover, все работает просто отлично (линии 1,2,3,4).
Я не могу понять, почему прокси-сервер внешнего вида работает так, как должен для кнопки «Назад», но не для UIBarButtonItem
. Я создаю, когда навигационный контроллер находится в popover.