如何将UIBarButtonItem放在Swift4上的NavigationController的ViewController上?

时间:2018-04-30 19:32:12

标签: ios swift xcode storyboard uibarbuttonitem

我有三个导航屏幕。但在其中一个,我不能放一个UIBarButtoItem。这个屏幕用于创建一个寄存器,我想创建一个按钮来保存"这个简单。当我这样做时,我选择了Bar Button Item,XCode不会让我掉到栏上。并且以编程方式,也不起作用。

我试过这个:(没有发生)

var btSalvar : UIBarButtonItem?

override func viewDidLoad() {
    super.viewDidLoad()
    btSalvar = UIBarButtonItem(title: "Salver", style: .plain, target: self, action: nil)
    self.navigationItem.rightBarButtonItem = btSalvar
    // Do any additional setup after loading the view.
}

在故事板中:(注意:按钮"项目"没有固定在栏上)

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

您有很多选择,其中之一是:

  

您必须创建一个超级视图控制器并在其中添加导航按钮代码。我为演示添加了一个后退按钮:

class MainViewController: UIViewController {


    override func viewDidLoad() {
        super.viewDidLoad()
    }
    /**
     To add the left back button on navigation.
     */
    var addLeftBarMenuButtonEnabled: Bool? {
        didSet {
            if addLeftBarMenuButtonEnabled! {
                let leftBarBtn = UIButton()
                leftBarBtn.setImage(UIImage(named: "backIcon"), for: .normal)
                leftBarBtn.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
                leftBarBtn.addTarget(self, action: #selector(actionBackButton), for: .touchUpInside)
                self.navigationItem.leftBarButtonItem = UIBarButtonItem.init(customView: leftBarBtn)
            } else {
                self.navigationItem.setHidesBackButton(true, animated: true)
            }
        }
    }
    ///This is action method for back button
    @objc func actionBackButton() {
        self.view.endEditing(true)
        self.navigationController?.popViewController(animated: true)
    }
}
  

现在你需要使用视图控制器中的后退按钮,超级视图控制器是MainViewController:

class ViewController: MainViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.addLeftBarMenuButtonEnabled = true
    }

}

您可以添加这样的导航按钮并使用您想要的位置。如果你想在每个视图控制器中使用它,那么你必须添加' self.addLeftBarMenuButtonEnabled = true'在主视图控制器中

 class MainViewController: UIViewController {


        override func viewDidLoad() {
            super.viewDidLoad()
            self.addLeftBarMenuButtonEnabled = true
        }
    }