【问题标题】:How to add right button in the navigation bar?如何在导航栏中添加右键?
【发布时间】:2016-08-10 04:09:26
【问题描述】:

我有一个问题要在导航栏中添加右键..

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

在我使用self.navigationController!.pushViewController 显示视图B 之后,我添加了一个导航栏来查看A。

在视图B的导航栏左侧自动显示一个后退按钮,很好。但现在我想在视图 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

你能帮我吗,谢谢!

【问题讨论】:

    标签: ios swift uiviewcontroller uinavigationbar


    【解决方案1】:

    您可以将以下代码添加到您的 B 控制器的 viewDidLoad 方法中。

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

    【讨论】:

      【解决方案2】:

      在 viewDidLoad 方法中添加以下代码

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

      这会在右侧添加一个标题为 Flip 的按钮,它会调用该方法:

      -(IBAction)flipView
      

      【讨论】:

        【解决方案3】:

        Vahan Babayan 的回答的 Swift 版本,正如您似乎使用这种语言一样,是:

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

        下面的方法会被self调用:

        func rightButtonAction(sender: UIBarButtonItem)
        

        请注意,所有这些都可以使用情节提要以图形方式设置,方法是将条形按钮项拖动到导航项并右键单击以设置目标操作。


        自从 Swift 3 和 4 发布以来的一个小更新:编译器现在可以检查选择器名称,防止在以编程方式设置目标操作时出现拼写错误。所以应该真正使用:

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

        【讨论】:

        • 谢谢你的回答,我已经资助了` let rightBtn = UIBarButtonItem(title: "Send", style: .Plain, target: self, action: "send:") self. navigationItem.setRightBarButtonItem(rightBtn, animated: true)`我知道我可以使用XIB来做到这一点,但我不明白为什么右边按钮的位置与XIB不同,所以我使用代码来做到这一点
        【解决方案4】:
        - (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
        
        }
        

        【讨论】:

          【解决方案5】:

          添加导航栏按钮项的Swift代码:

          方法一(当你想使用条形按钮系统项时)

          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]
          

          【讨论】:

            【解决方案6】:

            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!")
                   }           
                 }
              )
            

            【讨论】:

              猜你喜欢
              • 2017-12-17
              • 2011-08-15
              • 1970-01-01
              • 1970-01-01
              • 2015-08-01
              • 2023-03-13
              • 1970-01-01
              • 2013-10-24
              • 1970-01-01
              相关资源
              最近更新 更多