Как изменить изображение кнопки @IBAction при изменении состояния другого элемента (в данном случае bluetooth)? - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть небольшое приложение для подключения к периферийному устройству Bluetooth и его настройки.Вся часть Bluetooth работает нормально, но я изо всех сил пытаюсь установить изображение, связанное с @IBAction, на основе состояния соединения.Если устройство Bluetooth подключено, я хочу показать изображение для отправки, а если не изображение для сканирования.

Использование метода setNeedsDisplay () , когда центральный менеджер получает Смена состояния didDisconnectPeripheral , я могу изменить изображение, связанное с кнопкой, но оно обновляется только после следующего нажатия кнопки (аналогично изображению для состояния .normal ).

Есть ли способ заставить перезагрузить изображение, если не написать кнопку программно?Вот код, который устанавливает изображение после нажатия:

    var stateImage = UIImage(named: "send")

@IBAction func btoothConf(sender: UIButton) {
    sender.setImage(stateImage, for: .normal)

    if (peripheral != nil) && (peripheral.state == .connected) {
        sendCmd(command, peripheral!, writeChar)
    } else {
        self.scan()
    }
}

1 Ответ

0 голосов
/ 26 февраля 2019

ОК, мне удалось получить необходимую функциональность, выполнив следующие действия, но это похоже на кучу.

  1. Добавлен @ IBOutlet слабый var connectionState: UIButton! и связал его с той же кнопкой.
  2. Включено self.connectionState.setImage (stateImage, для: .normal) в функциях bluetooth, которые обрабатывают переходы состояний.Переходы подключения и отключения определяют разные образы для переменной stateImage .

Это работает, но, на мой взгляд, должен быть более простой способ, учитывая, что я могу установить изображение после нажатия кнопки (или перед, но только фоновым изображением).

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