Ios 在Swift中按下按钮时返回字符串

Ios 在Swift中按下按钮时返回字符串,ios,swift,Ios,Swift,有两个按钮。按钮的作用是确定在搜索图书时是按书名还是按作者姓名进行搜索 我制作了一个部件,当按下authorNameFilterBtn时,bookTitleFilterBtn被禁用 var buttons: [UIButton] { return [bookTitleFilterBtn, authorNameFilterBtn] } 我想要实现的是,按下bookTitleFilterBtn时返回“book\u title”,按下authorNameFilterBtn时返回“author\u n

有两个按钮。按钮的作用是确定在搜索图书时是按书名还是按作者姓名进行搜索

我制作了一个部件,当按下
authorNameFilterBtn
时,
bookTitleFilterBtn
被禁用

var buttons: [UIButton] { return [bookTitleFilterBtn, authorNameFilterBtn] }
我想要实现的是,按下bookTitleFilterBtn时返回“book\u title”,按下authorNameFilterBtn时返回“author\u name”

var buttons: [UIButton] { return [bookTitleFilterBtn, authorNameFilterBtn] }
  • 您可以在按钮按下方法中返回任何值,但不会有帮助,因为返回值将返回到
    UIControl
    类,并且您将无法访问它

  • 您可以将标签设置为button,当按下按钮时,您可以比较标签并确定按下了哪个按钮。您还可以管理按钮选择状态以设置背景。下面是示例代码

    override func viewDidLoad() {
        super.viewDidLoad()
    
        bookTitleFilterBtn.tag = 1
        bookTitleFilterBtn.setTitleColor(.black, for: .normal)
        bookTitleFilterBtn.setTitleColor(.white, for: .selected)
        bookTitleFilterBtn.addTarget(self, action: #selector(buttonClicked(_:)), for: .touchUpInside)
    
        authorNameFilterBtn.tag = 2
        authorNameFilterBtn.setTitleColor(.black, for: .normal)
        authorNameFilterBtn.setTitleColor(.white, for: .selected)
        authorNameFilterBtn.addTarget(self, action: #selector(buttonClicked(_:)), for: .touchUpInside)
    }
    
    
    
    
    @objc func buttonClicked(_ sender: UIButton) {
    
        if sender.tag == 1{
            bookTitleFilterBtn.isSelected = true
            authorNameFilterBtn.isSelected = false
        }else{
            bookTitleFilterBtn.isSelected = false
            authorNameFilterBtn.isSelected = true
        }
    }
    
  • main
    线程中,默认情况下无需将主块中的
    updateButtonsAppearance
    调用为触摸事件

  • 您可以在按钮按下方法中返回任何值,但不会有帮助,因为返回值将返回到
    UIControl
    类,并且您将无法访问它

  • 您可以将标签设置为button,当按下按钮时,您可以比较标签并确定按下了哪个按钮。您还可以管理按钮选择状态以设置背景。下面是示例代码

    override func viewDidLoad() {
        super.viewDidLoad()
    
        bookTitleFilterBtn.tag = 1
        bookTitleFilterBtn.setTitleColor(.black, for: .normal)
        bookTitleFilterBtn.setTitleColor(.white, for: .selected)
        bookTitleFilterBtn.addTarget(self, action: #selector(buttonClicked(_:)), for: .touchUpInside)
    
        authorNameFilterBtn.tag = 2
        authorNameFilterBtn.setTitleColor(.black, for: .normal)
        authorNameFilterBtn.setTitleColor(.white, for: .selected)
        authorNameFilterBtn.addTarget(self, action: #selector(buttonClicked(_:)), for: .touchUpInside)
    }
    
    
    
    
    @objc func buttonClicked(_ sender: UIButton) {
    
        if sender.tag == 1{
            bookTitleFilterBtn.isSelected = true
            authorNameFilterBtn.isSelected = false
        }else{
            bookTitleFilterBtn.isSelected = false
            authorNameFilterBtn.isSelected = true
        }
    }
    
  • main
    线程中,默认情况下无需将主块中的
    updateButtonsAppearance
    调用为触摸事件


  • 米蒂什一针见血。您只需要配置一次按钮。您可以在
    viewDidLoad
    中执行此操作,并告诉它您想要的“选定”和“正常”行为。就这样。从那里,你只需切换状态,按钮就知道每个状态该做什么。您只需要配置一次按钮。您可以在
    viewDidLoad
    中执行此操作,并告诉它您想要的“选定”和“正常”行为。就这样。从那里,您只需切换状态,按钮就知道如何处理每个状态。
    override func viewDidLoad() {
        super.viewDidLoad()
    
        bookTitleFilterBtn.tag = 1
        bookTitleFilterBtn.setTitleColor(.black, for: .normal)
        bookTitleFilterBtn.setTitleColor(.white, for: .selected)
        bookTitleFilterBtn.addTarget(self, action: #selector(buttonClicked(_:)), for: .touchUpInside)
    
        authorNameFilterBtn.tag = 2
        authorNameFilterBtn.setTitleColor(.black, for: .normal)
        authorNameFilterBtn.setTitleColor(.white, for: .selected)
        authorNameFilterBtn.addTarget(self, action: #selector(buttonClicked(_:)), for: .touchUpInside)
    }
    
    
    
    
    @objc func buttonClicked(_ sender: UIButton) {
    
        if sender.tag == 1{
            bookTitleFilterBtn.isSelected = true
            authorNameFilterBtn.isSelected = false
        }else{
            bookTitleFilterBtn.isSelected = false
            authorNameFilterBtn.isSelected = true
        }
    }