首页 > 解决方案 > UIBarButton 单击以使用 Swift 4.2 设置标志值

问题描述

我的场景,我有两个UIBarButton动作method,在这里,每当我单击DoneCancel按钮时,我都会移动到另一个ViewController。一旦用户单击完成barbutton,我需要设置一些标志值并验证另一个 ViewController 是否已button单击。

我的视图控制器一

let barButtonItem = UIBarButtonItem(image: UIImage(named: "backImgs"),
                                            style: .plain,
                                            target: self,
                                            action: #selector(menuButtonTapped))
self.navigationItem.rightBarButtonItem = barButtonItem

@objc fileprivate func menuButtonTapped() { // here I need to set flag value }

我的视图控制器二

class ViewControllertwo: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //Here need to validate flag values to button clicked or not 
    }
}

标签: iosswift3uibarbuttonitem

解决方案


我部分理解您的问题,在这里您需要了解tag概念,例如

 override func viewDidLoad() {
    super.viewDidLoad()
let barButtonItem = UIBarButtonItem(image: UIImage(named: "backImgs"),
                                        style: .plain,
                                        target: self,
                                        action: #selector(menuButtonTapped(_:)))
    barButtonItem.tag = 20
    let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(menuButtonTapped(_:)))
    cancelButton.tag = 10
    self.navigationItem.rightBarButtonItem = barButtonItem
    self.navigationItem.leftBarButtonItem = cancelButton
   }

处理你的目标函数就像

  @objc fileprivate func menuButtonTapped(_ sender: UIBarButtonItem) {
  // if you dont want the tag concept, use title property for check which button tapped  //print("get Tapped button title  == \(sender.title)")
    //if sender.tag == 20{
        // clicked for another VC button, add your segue code here
   // }else{
        // pressed cancel button
   // }
     let vcTwo = self.storyboard?.instantiateViewController(withIdentifier: "ViewControllertwo") as! ViewControllertwo
    vcTwo.getSelectedTag = sender.tag
    self.navigationController?.pushViewController(vcTwo, animated: true)

}

在您的 VC2 上创建一个全局 Int 以获取其来源的标签,

** 视图控制器二**

class ViewControllertwo : UIViewController {

    var getSelectedTag   = 0

    override func viewDidLoad() {
        super.viewDidLoad()

        if getSelectedTag == 20 {
            //pressed menu Tapped
        }
    }
}

推荐阅读