2016-12-27 2 views
2

Я собираюсь работать над проектом, который будет использовать много флажков. Я нашел решение, как показано ниже, но я знаю, что это не так.Лучший способ использовать флажок - IOS swift

@IBAction func btn_box(sender: UIButton) { 
    if (btn_box.selected == true) 
    { 
     btn_box.setBackgroundImage(UIImage(named: "box"), forState: UIControlState.Normal) 

      btn_box.selected = false; 
    } 
    else 
    { 
     btn_box.setBackgroundImage(UIImage(named: "checkBox"), forState: UIControlState.Normal) 

     btn_box.selected = true; 
    } 
} 

Итак, может ли кто-нибудь показать мне правильный способ иметь более 20 флажков в моем проекте?

Я буду использовать флажки в формах и целях настройки.

Спасибо.

+0

Вы используете для этого ячейку Tableview? – Amanpreet

+0

Нет, я использую по форме и в целях настройки – Akram

+0

Пожалуйста, перейдите по этой ссылке: http://stackoverflow.com/questions/40782238/how-to-show-checkmark-in-tableview-swift/40782436#40782436 –

ответ

14

Есть много Checkbox control или вы делаете это таким простым способом:

Для раскадровки:

  1. Настройте выбранное изображение вашей кнопки:

    enter image description here

  2. Установка по умолчанию изображение вашей кнопки:

    enter image description here

Для Программным способом:

btn_box.setBackgroundImage(UIImage(named: "box"), for: .normal) 
btn_box.setBackgroundImage(UIImage(named: "checkBox"), for: .selected) 

И кнопка действия:

@IBAction func btn_box(sender: UIButton) { 
    sender.isSelected = !sender.isSelected 
} 
4

Вместо проверки каждой кнопки просто используйте общий способ справиться с этим. Установите все ваши кнопки с тем же способом IBAction и осуществить это как:

@IBAction func btn_box(sender: UIButton) 
{ 
    // Instead of specifying each button we are just using the sender (button that invoked) the method 
    if (sender.selected == true) 
    { 
     sender.setBackgroundImage(UIImage(named: "box"), forState: UIControlState.Normal) 
     sender.selected = false; 
    } 
    else 
    { 
     sender.setBackgroundImage(UIImage(named: "checkBox"), forState: UIControlState.Normal) 
     sender.selected = true; 
    } 
} 
1

Вы можете использовать подход, ниже которого будет наиболее полезным: в вашем StoryBoard или ViewDidLoad назначить изображение для UIButton:

checkBoxButton.setBackgroundImage(UIImage(named: "box"), forState: UIControlState.Normal) 
checkBoxButton.setBackgroundImage(UIImage(named: "checkBox"), forState: UIControlState.Selected) 

После этого в вашем @IBAction метод просто реализовать следующий код:

@IBAction func btn_box(sender: UIButton) { 
    sender.selected = !sender.selected 
} 

Это сделает трюк.

0

Пожалуйста, попробуйте это.

btn.setImage(UIImage(named: "uncheckImage"), for: UIControlState.normal) 
btn.setImage(UIImage(named: "checkImage"), for: UIControlState.selected) 

@IBAction func btn_box(sender: UIButton) { 

    if btn.isSelected == true { 

      btn.isSelected = false 
    } 
    else { 

      btn.isSelected = true 
    } 
} 
+1

Или, может быть, просто кнопка.isSelected =! Button.isSelected – FrostyL