Я работаю на Swift. У меня экран с несколькими кнопками с текстом. Каждая кнопка имеет соответствующий текст метки. Из нескольких кнопок одна должна быть выбрана одновременно. Если выбрана кнопка 1, изображение кнопки 1, подлежащее замене с помощью переключателя, и текст кнопки 1 должны быть черного цвета, а оставшиеся должны быть выделены невыделенным светло-серым цветом.
Я добился этого при выполнении ниже, но , Я проверяю, есть ли лучший подход.
@IBAction func selectName(_ sender: UIButton) {
let myButtonImage = sender.currentImage
let unSelectedImage = UIImage(named: "un_Checked")
if sender.tag == 1 && myButtonImage!.pngData() == unSelectedImage!.pngData() { //setting for 1st button
sender.setImage(UIImage(named: "checked"), for: UIControl.State.normal )
radioButton4.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal)
radioButton3.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal)
radioButton4.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal)
radioButtonLabel1.textColor = UIColor.darkGray //setting for 1st label
radioButtonLabel2.textColor = UIColor.lightGray
radioButtonLabel3.textColor = UIColor.lightGray
radioButtonLabel4.textColor = UIColor.lightGray
} else if sender.tag == 2 && myButtonImage!.pngData() == unSelectedImage!.pngData() {
sender.setImage(UIImage(named: "checked"), for: UIControl.State.normal ) //setting for 2nd button
radioButton2.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal)
radioButton3.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal)
radioButton4.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal)
radioButtonLabel2.textColor = UIColor.darkGray //setting for 2nd label
radioButtonLabel3.textColor = UIColor.lightGray
radioButtonLabel4.textColor = UIColor.lightGray
radioButtonLabel1.textColor = UIColor.lightGray
} else if sender.tag == 3 && myButtonImage!.pngData() == unSelectedImage!.pngData() {
sender.setImage(UIImage(named: "checked"), for: UIControl.State.normal ) // setting for 3rd button
radioButton3.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal)
radioButton1.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal)
radioButton2.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal)
radioButton4.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal)
radioButtonLabel3.textColor = UIColor.darkGray //setting for 3rd label
radioButtonLabel1.textColor = UIColor.lightGray
radioButtonLabel2.textColor = UIColor.lightGray
radioButtonLabel4.textColor = UIColor.lightGray
} else if sender.tag == 2 && myButtonImage!.pngData() == unSelectedImage!.pngData() {
radioButton4.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal) //setting for 4th button
radioButton1.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal)
radioButton2.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal)
radioButton3.setImage(UIImage(named: "un_Checked"), for: UIControl.State.normal)
radioButtonLabel4.textColor = UIColor.darkGray //setting for 4th label
radioButtonLabel1.textColor = UIColor.lightGray
radioButtonLabel2.textColor = UIColor.lightGray
radioButtonLabel3.textColor = UIColor.lightGray
}
}
Но, по умолчанию первая кнопка, и следует выбрать первую метку.
Есть предложения?