Как получить доступ к состоянию виджета вне основного потока - PullRequest
0 голосов
/ 03 мая 2018

Мне нужно прочитать состояние флажка из потока, который не является основным потоком. Кажется, я не могу просто использовать следующее (что приводит к тому, что средство проверки основного потока говорит «UI API вызван в фоновом потоке: - [Состояние NSCell]» ):

myCheckbox.state

Что я должен делать вместо этого?

1 Ответ

0 голосов
/ 04 мая 2018

Мое текущее решение состоит в том, чтобы поддерживать свойство, которое обновляется при переключении флажка, и получать доступ к этому свойству вместо непосредственного чтения состояния флажка.

Приветствуется что-то более элегантное: это громоздко; тем более, если вы хотите сделать свойство доступным только для чтения или правильно обрабатывать установку его значения внутри программы.

class myViewController: NSViewController {

    @IBOutlet private weak var myCheckbox: NSButtonCell!
    public var myCheckboxState: Bool! // This can be read from any thread.

    @IBAction func onMyCheckboxAction(_ sender: NSButtonCell) {
        myCheckboxState = (myCheckbox.state == NSOnState)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        ...
        myCheckboxState = (myCheckbox.state == NSOnState)
        ...
    }

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