UIBarButtonItem селектор не работает - PullRequest
0 голосов
/ 13 июня 2018

У меня есть MainViewController, встроенный в Navigation Controller, как показано ниже:
enter image description here

А в MainViewController.swift я добавил два UIBarButtonItem (слева и справа)программно:

class MainViewController: UIViewController {

    let rightButton = UIBarButtonItem(title: "Right", style: .plain, target: self, action: #selector(onRightClick))
    let leftButton = UIBarButtonItem(title: "Left", style: .plain, target: self, action: #selector(onLeftClick))

    override func viewDidLoad() {
        super.viewDidLoad()
        navigationItem.rightBarButtonItem = rightButton
        navigationItem.leftBarButtonItem = leftButton
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @objc func onRightClick() {
        print("[Main] Right Click")
    }

    @objc func onLeftClick() {
        print("[Main] Left Click")
    }
}

Кнопки действительно отображаются на экране, но интересно то, что функции выбора onLeftClick и onRightClick никогда не вызываются при каждом нажатии левой или правой кнопки.Что-нибудь, что я должен сделать, чтобы это работало?Я использую Xcode 9.3.

1 Ответ

0 голосов
/ 13 июня 2018

попробуйте с внутренней областью один раз

override func viewDidLoad() {
    super.viewDidLoad()

    let rightButton = UIBarButtonItem(title: "Right", style: .plain, target: self, action: #selector(self.onRightLeftClick(_ :)))
    rightButton.tag = 1
    let leftButton = UIBarButtonItem(title: "Left", style: .plain, target: self, action: #selector(self.onRightLeftClick(_ :)))
    rightButton.tag = 2
    self.navigationItem.rightBarButtonItem = rightButton
    self.navigationItem.leftBarButtonItem = leftButton
}

обработать действие как

func onRightLeftClick(_ sender: UIBarButtonItem){
    if sender.tag == 1{
        // rightButton action
    }else{
        // leftButton action
    }
}
...