Xcode: UIButton setImage не изменяет изображение кнопки

#ios #swift #xcode #uibutton #tvos

#iOS #swift #xcode #uibutton #tvos

Вопрос:

ПРИМЕЧАНИЕ: Другие задавали аналогичный вопрос, и ни один из предоставленных ответов не решил мою проблему.

Вот мой код:

    @IBOutlet var testButton:UIButton!
    override func viewDidLoad() {
       self.testButton.setImage(UIImage(named: "icn_checkbox_")?.imageWithColor(color: CMStyle.darkBlueColor), for: .normal)
        self.testButton.setImage(UIImage(named: "icn_checked")?.imageWithColor(color: CMStyle.darkBlueColor), for: .selected)
        
    }
 @IBAction func testButtonAction(_ sender: Any) {
        print("INSIDE testButtonAction")
              self.testButton.isSelected = !self.testButton.isSelected
              print("self.testButton.isSelected: ",self.testButton.isSelected)
    }
  

Это кнопка:
введите описание изображения здесь.
Это характеристики кнопки:
введите описание изображения здесь.
Это icn_checkbox_ изображение, используемое для .normal состояния:
введите описание изображения здесь
Это icn_checked изображение, используемое для .selected состояния:
введите описание изображения здесь

Выполняется код внутри testButtonAction . Поэтому я действительно не понимаю, почему изображение не изменится (почему кнопка не становится отмеченной).

Комментарии:

1. Нет, оно зарегистрировано как необязательное

Ответ №1:

Вы можете использовать это:

 @IBOutlet var testButton: UIButton!
override func viewDidLoad() {
       self.testButton.setImage(UIImage(named: "icn_checkbox_")?.imageWithColor(color: CMStyle.darkBlueColor), for: .normal)
}

@IBAction func testButtonAction(_ sender: Any) {
       print("INSIDE testButtonAction")
       self.testButton.isSelected = !self.testButton.isSelected
       if self.testButton.isSelected {
          self.testButton.setImage(UIImage(named: "icn_checked")?.imageWithColor(color: CMStyle.darkBlueColor), for: .normal)
       } else {
          self.testButton.setImage(UIImage(named: "icn_checkbox_")?.imageWithColor(color: CMStyle.darkBlueColor), for: .normal)
       }
    }
  

Ответ №2:

Вы можете установить изображения для состояний кнопки только в раскадровке, где Default = .normal и Selected = .selected

введите описание изображения здесь

Выберите выделенный и установите там изображение. Изображение с цветом похоже на tintColor, если вы используете шаблонные изображения