1

我目前正在制作一个pin-code. 我想将所有功能合并为一个函数,以便将按钮事件功能合并为一个所以我想获得名称UIButton,但我不知道如何。

@IBOutlet weak var oneButton: UIButton!
@IBOutlet weak var twoButton: UIButton!
...
var pinCodeNum : String! = ""
...

  @IBAction func OneButton(_ sender: UIButton) {
        pincodeLogic(sender)
    }

    func pincodeLogic(_ sender: UIButton) {
         // I want get value is (example : 'oneButton' or 'twoButton' or 'threeButton' more )
    }

正如您从我的代码中看到的那样,我得到一个“ sender”作为参数,我想知道该参数的名称oneButtontwoButton使用该参数。我怎么知道?

屏幕

我的数字按钮由 abutton和 a组成label


编辑


  @IBAction func OneButton(_ sender: UIButton) {

        pincodeLogic(sender)
    }

    func pincodeLogic(_ sender: UIButton) {
         if let number = sender.currentTitle {
            print(number)
        }
    }

我看不到打印日志。

4

3 回答 3

3

您可以将发件人与您的按钮实例进行比较。

func pincodeLogic(_ sender: UIButton) {
    switch sender {
    case oneButton:
        print("oneButton pressed")
    case twoButton:
        print("twoButton pressed")
    default:
        print("unknown button pressed")
    }
}
于 2019-09-17T09:44:43.673 回答
0

要使用发送者访问按钮中存在的标签内容,这是一个示例:

@IBAction func OneButton(_ sender: UIButton) {
   print(sender.titleLabel?.text)
}

所以你可以这样做:

@IBAction func OneButton(_ sender: UIButton) {

        pincodeLogic(sender)
  }

  func pincodeLogic(_ sender: UIButton) {
         if let number = sender.titleLabel?.text {
            print(number)
        }
  }

我希望我一直在你身边。让我知道。

于 2019-09-17T09:45:46.423 回答
0

如果您想访问按钮操作以执行某些特定任务。只需在每个按钮上放置一个标签并将相同的目标添加到所有按钮。

@IBAction func btnAction(_ sender: UIButton) {
switch sender.tag {
case 1:
    print("oneButton pressed")
case 2:
    print("twoButton pressed")
default:
    print("unknown button pressed")
 }
}

如果您只需要打印按钮标题,请执行以下操作。

@IBAction func btnAction(_ sender: UIButton) {
   print(sender.titleLabel?.text! as! String)
}
于 2019-09-17T09:30:44.823 回答