Несколько bar button item рядом
Пора уже переходить непосредственно к программированию. Постараюсь освещать вопросы, на которые искал сам ответы в своё время и использовал материал на практике.
Задача, которая часто встречается на практике: необходимо разместить несколько 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 = @"Кнопочка нажалась";
