Настройка элементов UIBarButtonItems в различных частях приложений (фоновое изображение и форма)

Я хочу изменить фоновое изображение моего UIBarButtonItems. В корневом представлении я хочу, чтобы они были определенным фоновым изображением (но все же кнопками с закругленными прямоугольниками) на панели навигации, но в следующем представлении у меня есть UIToolBar, где я хочу, чтобы он снова имел разные фоны.

Я использовал [[UIBarButtonItem] appearance] в своем делегате приложения, чтобы изменить их все, но теперь я понимаю, что для одних я хочу использовать один стиль, а для других — другой.

Что еще более важно, я хочу изменить не только фоновое изображение, но и форму для некоторых. Для одного из UIBarButtonItems UIToolBar я хочу, чтобы он имел форму кнопки «Назад» на панели навигации. Как бы я достиг этого взгляда?

Могу ли я добиться того и другого с помощью метода, описанного здесь?

В основном: как мне сделать пользовательские UIBarButtonItems по всему приложению и иметь некоторые из них с разными формами?


person Doug Smith    schedule 29.04.2013    source источник


Ответы (2)


Если вы хотите, чтобы кнопки выглядели по-разному в разных контроллерах представления, вы должны установить их в контроллере представления, а не в делегате. Добавьте код либо в метод init, либо в метод viewWillAppear: для настройки кнопок. Если вы настраиваете элементы UIToolbar, используйте код, аналогичный ссылка, которую вы дали. Если это для панели навигации, сделайте что-то вроде этого:

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
//Customise button with background etc that you want

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationItem.leftBarButtonItem = item;
//Release item if you're not using ARC
person Ander    schedule 29.04.2013

Вы можете использовать метод «appearanceWhenContainedIn» из протокола UIAppearance http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAppearance_Protocol/Reference/Reference.html

Итак, для панели инструментов вы должны использовать: [UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil]

И для панели навигации: [UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]

person mmackh    schedule 29.04.2013