Несколько bar button item рядом
21 июня 2014 | Категория: IOS Программирование
Задача которая часто встречается на практике. Необходимо разместить несколько bar button item рядом. Например, как в моем приложении "Конкурсы, игры, розыгрыши". Сверху 4 кнопки Увеличить шрифт, уменьшить шрифт, поделиться с друзьями и добавить в избранное. Как выяснилось Apple лучше знает сколько нам нужно кнопок с каждой стороны и через IB вы это сделать не сможете. Только разместить одну кнопку справа, одну слева и посередине. Например на сцене storyboard. Так что придется нам делать это программно.
Код вставляется во ViewDidLoad и выглядит так.
//Создаем объект картинку для кнопки "Избранное, а затем и саму кнопку"
UIImage *Favorites_add = [UIImage imageNamed:@"favorites_add.png"];
UIBarButtonItem *addFavoritesItem = [[UIBarButtonItem alloc] initWithImage:Favorites_add style:UIBarButtonItemStylePlain target:self action:@selector(addFavorites)];
//Почти то же самое, но берем стандартное изображение Action, поэтому картинку для кнопки создавать не нужно.
UIBarButtonItem *sendSocialItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(sendSocial)];
//Все остальные кнопки из наших картинок предварительно добавленных в проект
UIImage *Font_minus = [UIImage imageNamed:@"font_down.png"];
UIBarButtonItem *fontMinusItem = [[UIBarButtonItem alloc] initWithImage:Font_minus style:UIBarButtonItemStylePlain target:self action:@selector(fontChanges:)];
UIImage *Font_plus = [UIImage imageNamed:@"font_up.png"];
UIBarButtonItem *fontPlusItem = [[UIBarButtonItem alloc] initWithImage:Font_plus style:UIBarButtonItemStylePlain target:self action:@selector(fontChanges:)];
//Создаем массив наших кнопочек
NSArray *actionButtonItems = @[ sendSocialItem, addFavoritesItem, fontMinusItem,fontPlusItem,];
//Присваиваем свойству rightBarButtonItems наш массив и вместо одной кнопки справа будут 4
self.navigationItem.rightBarButtonItems = actionButtonItems;
Когда мы создавали кнопку написали target:self action:@selector(addFavorites)];
Т.е. в этом классе должен быть метод с названием addFavorites в котором и задано действие. Например.
-(void)addFavorites
{
self.labelName.text =@"Кнопочка нажалась";
{