如何处理自定义单选按钮

时间:2019-01-31 09:37:44

标签: ios swift button radio-button

嗨,我需要像我的项目中的单选按钮 Radio Button Image 我将图像放入按钮,选择Booth,然后将其清空。 我如何处理这些被选中的另一个未被选中。 我们的选择只有一次。

@IBOutlet var nothisonlybtn: UIButton!
@IBOutlet var biweeklybtn: UIButton!
@IBOutlet var weeklybtn: UIButton!

如何使用按钮插座来处理

3 个答案:

答案 0 :(得分:0)

在这种情况下,您发布的图像显示表格视图会很好。

如果是,请使用tableView tableView: didSelectItemAt indexPath:tableView tableView: didDeselectItemAt indexPath:方法。

func tableView(_ tableView: UITableView, didSelectItemAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath) as! <#UITableViewCellClass#>
    cell.rImageBtn.setImage(<#selected image#>, for: .normal)
}

func tableView(_ tableView: UITableView, didDeselectItemAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath) as! <#UITableViewCellClass#>
    cell.rImageBtn.setImage(<#unselected image#>, for: .normal)
}

如果图像是UIView中的单个实体,则:

@IBOutlet weak var rImageBtn1: UIButton!
@IBOutlet weak var rImageBtn2: UIButton!
@IBOutlet weak var rImageBtn3: UIButton!

@objc func button1Tapped() {
    rImageBtn1.setImage(<#selected image#>, for: .normal)
    rImageBtn2.setImage(<#unselected image#>, for: .normal)
    rImageBtn3.setImage(<#unselected image#>, for: .normal)
}

@objc func button2Tapped() {
    rImageBtn1.setImage(<#unselected image#>, for: .normal)
    rImageBtn2.setImage(<#selected image#>, for: .normal)
    rImageBtn3.setImage(<#unselected image#>, for: .normal)
}

@objc func button3Tapped() {
    rImageBtn1.setImage(<#unselected image#>, for: .normal)
    rImageBtn2.setImage(<#unselected image#>, for: .normal)
    rImageBtn3.setImage(<#selected image#>, for: .normal)
}

希望这可以解决您的问题。

答案 1 :(得分:0)

我们为所有按钮提供一个通用操作,并为这些标签提供0,1,2。

尝试使用此代码。

@IBAction func radioButtonAction(_ sender: UIButton) {

        weeklybtn.setImage(UIImage(named: "Radio Button"), for: .normal)
        biweeklybtn.setImage(UIImage(named: "Radio Button"), for: .normal)
        nothisonlybtn.setImage(UIImage(named: "Radio Button"), for: .normal)
        weeklylbl.textColor = UIColor(red: 92/255, green: 112/255, blue: 139/255, alpha: 1.0)
        biweeklylbl.textColor = UIColor(red: 92/225, green: 112/255, blue: 139/255, alpha: 1.0)
        onlyForthisLbl.textColor = UIColor(red: 92/225, green: 112/255, blue: 139/255, alpha: 1.0)
        if sender.tag == 0
        {
            weeklybtn.setImage(UIImage(named: "Checked"), for: .normal)
            weeklylbl.textColor = UIColor(red: 46/225, green: 125/255, blue: 225/255, alpha: 1.0)
        }
        else if sender.tag == 1
        {
            biweeklybtn.setImage(UIImage(named: "Checked"), for: .normal)
            biweeklylbl.textColor = UIColor(red: 46/225, green: 125/255, blue: 225/255, alpha: 1.0)
        }
        else
        {
            nothisonlybtn.setImage(UIImage(named: "Checked"), for: .normal)
            onlyForthisLbl.textColor = UIColor(red: 46/225, green: 125/255, blue: 225/255, alpha: 1.0)
        }

    }

答案 2 :(得分:0)

给所有按钮一个通用的IBOutletIBAction,并给这些标签加上0,1,2。

enter image description here

通用IBOutlet

@IBOutlet var radioButtons: [UIButton]!

通用IBAction

@IBAction func radioButtonTapped(_ sender: UIButton) {

   for button in radioButtons {
        if button.tag == sender.tag {
            button.setImage(UIImage(named: "Checked"), for: .normal)
            button.titleLabel!.textColor = UIColor(red: 46/225, green: 125/255, blue: 225/255, alpha: 1.0)
        }else{
            button.setImage(UIImage(named: "Radio Button"), for: .normal)
            button.titleLabel!.textColor = UIColor(red: 92/255, green: 112/255, blue: 139/255, alpha: 1.0)
        }
    }

}