如何在导航栏中添加右侧按钮?

14

我有一个问题,想要在导航栏中添加右侧按钮。

我有两个视图:视图 A 和视图 B。

我给视图 A 添加了导航栏,在使用 self.navigationController!.pushViewController 显示视图 B 后,导航栏的左侧自动显示了返回按钮,这很好。但是现在我想在导航栏的右侧添加一个按钮。我尝试了一些答案,但是它们都不起作用... 我尝试了以下答案:

1) 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

你能帮我吗?谢谢!

6个回答

35

如果您使用Swift语言,Vahan Babayan的答案的Swift版本如下:

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

self.navigationItem.rightBarButtonItem = rightButtonItem

以下方法将在self上调用:

func rightButtonAction(sender: UIBarButtonItem)
注意,所有这些都可以通过使用Storyboard进行图形设置,方法是将“Bar Button Item”拖到您的导航项中,然后右键单击设置目标动作。
自从Swift 3和4发布以来有一个小更新:编译器现在可以检查选择器名称,防止在程序化设置目标操作时出现拼写错误。因此,应该真正使用:
let rightButtonItem = UIBarButtonItem.init(
      title: "Title", 
      style: .Done, 
      target: self, 
      action: #selector(rightButtonAction(sender:))
)

1
谢谢您的回答,我已经找到了关于 let rightBtn = UIBarButtonItem(title: "Send", style: .Plain, target: self, action: "send:") self.navigationItem.setRightBarButtonItem(rightBtn, animated: true) 的答案。我知道我可以使用XIB来实现这个功能,但是我不知道为什么右侧按钮的位置与我的XIB不同,所以我使用代码来实现它。 - user2262304

4
你可以将以下代码添加到你的 B 控制器的 viewDidLoad 方法中。
UIBarButtonItem *rightButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Title" 
                                                                    style:UIBarButtonItemStyleDone 
                                                                    target:self 
                                                                    action:@selector(rightButtonAction:)];
self.navigationItem.rightBarButtonItem = rightButtonItem;

2
- (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

}

0

添加导航栏按钮项的 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开始,它允许您在导航栏的任一侧添加多个按钮。就像这样:

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]

0

在viewDidLoad方法中添加以下代码

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

这将在右侧添加一个标题为“翻转”的按钮,调用该方法。
-(IBAction)flipView

-1
尝试使用以下代码来编写 Swift UI

 .navigationBarItems(
   leading:
     HStack {
       Button("About") {
         print("About tapped!")
       }
       Button("Call") {
         print("Call tapped!")
       }
     },
                                    
   trailing:
     HStack {
       Button("Settings") {
         print("Settings tapped!")
       }
       Button("Contacts") {
         print("Contacts tapped!")
       }           
     }
  )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接