iOS - UINavigationController добавляет несколько правильных элементов? - PullRequest
33 голосов
/ 30 июля 2011

У меня есть UINavigationController. Я пытаюсь добавить несколько кнопок на правой стороне панели навигации. Как мне этого добиться? Какую кнопку это займет? UIBarButton или UINavigationItem?

Ответы [ 6 ]

80 голосов
/ 11 декабря 2011

Начиная с iOS5, вы можете назначить массив элементов панели кнопок свойству rightBarButtonItems (обратите внимание на множественное число) элемента навигации.

28 голосов
/ 01 октября 2012

Я использовал ответ JRTurtons в Xcode 4.5, iOS 6 и реализовал его так, и он работает:

// Two buttons at the right side of nav bar
UIBarButtonItem *addAttachButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addAttachmentClicked:)];
UIBarButtonItem *sendButton = [[UIBarButtonItem alloc] initWithTitle:LS(@"Send") style:UIBarButtonItemStyleBordered target:self action:@selector(sendClicked:)];
self.navigationItem.rightBarButtonItems = @[addAttachButton,sendButton];

Однако, я должен отметить, что UIBarButtonSystemItemPageCurl не работает так.

15 голосов
/ 31 июля 2011

Я уверен, что прочитал в справочнике разработчика, что дополнительные кнопки на панели навигации не одобряются.Я не могу найти этот отрывок сейчас.Я сам этого не делал, но нашел эту ссылку, которая, кажется, точно описывает, что вам нужно сделать: (http://www.mattdipasquale.com/blog/2010/11/02/how-to-add-multiple-uibarbuttonitems-to-uinavigationbar/)

Рассматривали ли вы использование свойства панели инструментов контроллера навигации?

1 голос
/ 09 октября 2014

добавить любой дизайн в контроллер навигации в XCode очень просто.

добавить UIView к вашей сцене, добавить нужные вам кнопки в UIView, затем перетащить UIView в нужное место в navigationController * 1003.*

0 голосов
/ 29 октября 2015

В Xcode 7.1 (возможно, даже раньше) вы можете добавить несколько элементов справа или слева от UINavigationBar, просто перетаскивая их внутрь. Если вы перетаскиваете только в нужное место, вы получаете небольшую вертикальную полосу, которая указывает, гдеэтот элемент будет вставлен.

0 голосов
/ 11 декабря 2011

на самом деле даже немного хакерский, но в то же время более чистый способ сделать это: просто определите категорию в UINavigationItem, например:

UINavigationItem + Toolbars.h:

@interface UINavigationItem (Toolbars)

@property (nonatomic, retain) IBOutlet UIToolbar * rightToolBar;
@property (nonatomic, retain) IBOutlet UIToolbar * leftToolBar;

- (void)setRightToolBar:(UIToolbar *)_rightToolBar;
- (UIToolbar *)rightToolBar;
- (void)setLeftToolBar:(UIToolbar *)_leftToolBar;
- (UIToolbar *)leftToolBar;

@end

UINavigationItem + Toolbars.m:

#import "UINavigationItem+Toolbars.h"

@implementation UINavigationItem (Toolbars)

- (void)setRightToolBar:(UIToolbar *)_rightToolBar {
    self.rightBarButtonItems = _rightToolBar.items;
}

- (UIToolbar *)rightToolBar {
    return nil;
}

- (void)setLeftToolBar:(UIToolbar *)_leftToolBar {
    self.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:_leftToolBar] autorelease];
}

- (UIToolbar *)leftToolBar {
    return nil;
}

@end

После этого просто назначьте выход в настройках IB панели инструментов (просто создайте ее) и наслаждайтесь кнопками, появляющимися на элементе навигации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...