如何在swift5中获取UIButton名称?

Posted

技术标签:

【中文标题】如何在swift5中获取UIButton名称?【英文标题】:How to get UIButton name in swift5? 【发布时间】:2019-09-17 09:28:14 【问题描述】:

我目前正在制作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 的名称。我怎么知道?

我的数字按钮由buttonlabel 组成。


编辑


  @IBAction func OneButton(_ sender: UIButton) 

        pincodeLogic(sender)
    

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

我看不到打印日志。

【问题讨论】:

使用if let number = sender.currentTitle print(number) 为每个按钮添加不同的功能。 嗨@Fogmeister 你给每个按钮添加不同的功能是什么意思? 为每个按钮创建通用方法并使用touchup action直接获取sender.currentTitle。 @Anbu.Karthik 是对的,你应该使用sender.currentTitle 【参考方案1】:

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

func pincodeLogic(_ sender: UIButton) 
    switch sender 
    case oneButton:
        print("oneButton pressed")
    case twoButton:
        print("twoButton pressed")
    default:
        print("unknown button pressed")
    

【讨论】:

我收到的发件人不是字符串。 @iosbegindevel 我知道。我有你可以比较 UIButton 对象 这是我想要的方式。谢谢。【参考方案2】:

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

@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)
        
  

我希望我一直在你身边。告诉我。

【讨论】:

点击一个按钮也看不到打印日志,【参考方案3】:

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

@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)

【讨论】:

以上是关于如何在swift5中获取UIButton名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何从单选按钮获取值到swift 5中的变量

如何在 swift5 和 Alamofire 5 beta 版本中获取和保存响应?

如何在自动布局视图中获取 UIButton 位置

按下时如何获取 UIButton 的标题

如何在 test.m 文件中获取 uibutton 状态值

如何从 UIScrollView 获取 UIButton 位置