Как поставить UIBarButtonItem на ViewController из NavigationController на Swift4? - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть три экрана для навигации. Но в одном из них я не могу поставить UIBarButtoItem. Этот экран предназначен для создания регистра, и я хочу создать кнопку «Сохранить», это просто. Когда я это сделал, я выбираю пункт Bar Bar 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 голосов
/ 30 апреля 2018

У вас есть много вариантов, один из них:

Вы должны создать контроллер Super View и добавить в него код кнопки навигации. Я добавил кнопку «Назад» для демонстрации:

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
        }
    }
...