Как работать с пользовательскими переключателями - PullRequest
0 голосов
/ 31 января 2019

Привет Мне нужно радио кнопку в моем проекте, как Изображение радио кнопки Я беру изображения в кнопку, стенд выбран и пуст.Как я могу справиться с этим выбран один другой не выбрать.наш выбор только один раз.

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

Как мы справляемся, используя кнопки

Ответы [ 3 ]

0 голосов
/ 04 февраля 2019

Мы даем одно общее действие для всех кнопок и присваиваем эти теги, как 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)
        }

    }
0 голосов
/ 04 февраля 2019

Дайте одно общее IBOutlet и IBAction для всех кнопок и присвойте им такие теги, как 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)
        }
    }

}
0 голосов
/ 31 января 2019

Изображение, которое вы разместили, показывает, что табличное представление в этом случае пойдет на пользу.

Если это так, используйте методы 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)
}

Надеюсь, это решит вашу проблему.

...