it-swarm.com.ru

iOS - UINavigationController добавляет несколько правильных элементов?

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

33
aryaxt

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

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

15
Dean Davids

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

80
jrturton

Я использовал ответ 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 не работает так. 

28
wzbozon

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

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

1
mihai

на самом деле есть даже немного хакерский, но в то же время более чистый способ сделать это: просто определите категорию в 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 на панели инструментов (просто создайте ее) и наслаждайтесь кнопками, появляющимися на элементе навигации.

0
Anton

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

0
Rick