Как добавить правую кнопку в навигационную панель?

У меня есть вопрос, чтобы добавить правую кнопку в навигационной панели..

У меня есть два вида: вид A и вид B

добавить панель навигации для просмотра, после того, как я использовать self.navigationController!.pushViewController показать вид B.

Это показывает кнопку "Назад" в левой части навигационной панели view B automatic, это хорошо. но теперь я хочу добавить кнопку справа от навигационной панели view B.. Я пробовал некоторые ответы, но это не работает... Я пробовал ответы likes : Один) https://www.hackingwithswift.com/example-code/uikit/how-to-add-a-bar-button-to-a-navigation-bar 2)http://blog.apoorvmote.com/add-multiple-bar-button-item-navigation-bar/?lang=fr

не могли бы вы помочь мне, спасибо !

5 ответов


быстрая версия ответа Ваана Бабаяна, как вы, кажется, используете этот язык:

let rightButtonItem = UIBarButtonItem.init(
      title: "Title", 
      style: .Done, 
      target: self, 
      action: "rightButtonAction:"
)

self.navigationItem.rightBarButtonItem = rightButtonItem

следующий метод будет вызываться на self:

func rightButtonAction(sender: UIBarButtonItem)

обратите внимание, что все это можно установить графически с помощью раскадровки, перетащив элемент кнопки панели в навигационный элемент и щелкнув правой кнопкой мыши, чтобы установить целевое действие.


небольшое обновление, так как Swift 3 и 4 отсутствуют: компилятор теперь может проверять имена селекторов, предотвращая опечатки при настройке target-action программно. Поэтому следует действительно использовать:

let rightButtonItem = UIBarButtonItem.init(
      title: "Title", 
      style: .Done, 
      target: self, 
      action: #selector(rightButtonAction(sender:))
)

вы можете добавить следующий код вviewDidLoad метод.

UIBarButtonItem *rightButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Title" 
                                                                    style:UIBarButtonItemStyleDone 
                                                                    target:self 
                                                                    action:@selector(rightButtonAction:)];
self.navigationItem.rightBarButtonItem = rightButtonItem;

- (void)viewDidLoad {

    [super viewDidLoad];
    UIBarButtonItem *rightBtn = [[UIBarButtonItem alloc]initWithTitle:@"Right Button" style:UIBarButtonItemStyleDone target:self action:@selector(rightBtnClick)];
    self.navigationItem.rightBarButtonItem = rightBtn;
}

-(void)rightBtnClick{
    // code for right Button

}

добавить ниже код в метод viewDidLoad

UIBarButtonItem *flipButton = [[UIBarButtonItem alloc] 
                               initWithTitle:@"Flip"                                            
                               style:UIBarButtonItemStyleBordered 
                               target:self 
                               action:@selector(flipView:)];
self.navigationItem.rightBarButtonItem = flipButton;

это добавляет кнопку с правой стороны с заголовком флип, который вызывает метод:

-(IBAction)flipView

Swift код для добавления элемента кнопки панели навигации:

Способ 1 (когда вы хотите использовать системный элемент кнопки панели)

navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))

Способ 2 (когда вы хотите дать свой собственный титул кнопке)

navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped))

начиная с iOS 5, он позволяет добавлять более 1 кнопки по обе стороны панели навигации. Что-то вроде этого:--4-->

let add = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
let display = UIBarButtonItem(title: "Display", style: .plain, target: self, action: #selector(playTapped))

navigationItem.rightBarButtonItems = [add, display]