2017-01-20 6 views
-1

Я ищу, чтобы реализовать кнопку, которая может использоваться в качестве тикбокса, и позволяет пользователю переключаться с помощью тикбокса в режиме включения/выключения (отключено/отмечено). В настоящее время я установил свою кнопку с помощью инспектора атрибутов, включая «Title» как «X», а «Text Color» - красный.Swift - Переключить заголовок UIButton, если выбрано

После загрузки кнопки появляется красная «X», после того как она постучана, она превращается в зеленый галочку.

Мой вопрос: Как вы активируете кнопку для повторного возврата назад к красному X (это исходное состояние), продолжение в цикле при каждом нажатии?

@IBAction func check2(_ sender: UIButton) { 
    sender.setTitle("✓", for: .normal) 
    sender.setTitleColor(UIColor.green, for: UIControlState.normal) 
} 

Спасибо

ответ

5

Отслеживание состояния с переменной и обновить внешний вид в зависимости от состояния:

class ViewController: UIViewController{ 
     @IBOutlet weak var button: UIButton! 
     var isChecked = true 

     @IBAction func check2(_ sender: UIButton) { 
      isChecked = !isChecked 
      if isChecked { 
       sender.setTitle("✓", for: .normal) 
       sender.setTitleColor(.green, for: .normal) 
      } else { 
       sender.setTitle("X", for: .normal) 
       sender.setTitleColor(.red, for: .normal) 
      } 
     } 
    } 
+0

Спасибо, я поменялся местами X/✓ и их репрезентативными цветами, так как по умолчанию был красный x. Спасибо за вашу помощь! –

2

Обновлено для Swift 3

lazy var toggleBT: UIButton = { 

    let button = UIButton() 
    button.frame = CGRect(x: 40, y: 100, width: 200, height: 40) 
    button.backgroundColor = .orange 
    button.isSelected = false // optional(because by default sender.isSelected is false) 
    button.setTitle("OFF", for: .normal) 
    button.setTitleColor(.white, for: .normal) 
    button.titleLabel?.font = .boldSystemFont(ofSize: 14) 
    button.addTarget(self, action: #selector(handleToggleBT), for: .touchUpInside) 
    return button 
}() 

func handleToggleBT(sender: UIButton) { 

    sender.isSelected = !sender.isSelected 

    if sender.isSelected { 

     print(sender.isSelected) 
     toggleBT.setTitle("ON", for: .normal) 
    } 

    else { 

     print(sender.isSelected) 
     toggleBT.setTitle("OFF", for: .normal) 
    } 
} // don't forget to add this button as a subView for eg. view.addSubview(toggleBT) 

enter image description here

Смежные вопросы