Почему UIButton требует двух кликов, чтобы изменить свое изображение - PullRequest
0 голосов
/ 17 ноября 2018

Я новичок в разработке приложений для iOS с использованием Swift 4. Я использовал приведенный ниже код, чтобы изменить изображение button2, запустив его в симуляторе iOS:

 @IBAction func button2(_ sender: Any) {
     button2.setImage(UIImage(named: "wrong_answer"), for: .normal)
 }

Однако button2 было выделено, когда я впервые щелкнул по нему, не меняя его изображение. Затем после второго клика изображение было изменено на button2.

У меня вопрос, почему изображение не изменилось в button2 после первого клика?

Что я могу сделать, чтобы изменить изображение после первого щелчка вместо двух? Это ошибка в симуляторе iOS XCode или это нормально?

Ответы [ 3 ]

0 голосов
/ 17 ноября 2018

Переименуйте ваш метод / действие, чтобы оно отличалось от кнопки / свойства.

Измените Any на UIButton, поскольку вы знаете его класс.

@IBAction func buttonTapped(_ buttonTapped: UIButton) {
  buttonTapped. button.isSelected = !button.isSelected
}

Убедитесь, что вы получаете кнопкуобратные вызовы, объявив контроллер представления UIButtonDelegate и установив для свойства делегата кнопки значение self.

0 голосов
/ 24 ноября 2018

это ошибка симулятора.это работало на реальном устройстве

0 голосов
/ 17 ноября 2018

Возможно, у вас есть проблема, связанная с UIButton состояниями, которая вызывает эту проблему. Я не думаю, что это ошибка симулятора. Кстати, хорошей практикой, которой вы должны следовать, является название розетки, отличной от @IBAction. Допустим,

@IBAction func buttonTapped(_ sender: Any) {
  button.setImage(UIImage(named: "image"), for: .normal)
}

Попробуйте это:

override func viewDidLoad() {
  super.viewDidLoad()
  button.setImage(UIImage(named: "image"), for: .selected)
}

@IBAction func buttonTapped(_ sender: Any) {
  button.isSelected = !button.isSelected
}

И тогда изображение будет обновляться автоматически при нажатии на кнопку. Вы можете изменить его на button.isSelected = true, если хотите сохранить изображение после первого нажатия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...