У меня есть окно, которое отражает статус NSOperation
. Как мне связать NSProgressIndicator
с профилем качества NSOperation
?Как привязать NSProgressIndicator к свойству NSOperation?
ответ
AppKit не является потокобезопасным. Любые обновления объекта UI должны произойти на основной теме. KVO не отправляет наблюдательные сообщения по потокам. Таким образом, вам понадобится и еще один способ обновления индикатора прогресса, чем просто KVO.
В вашем методе вам необходимо периодически отправлять сообщения о ходе выполнения. Проще всего было бы использовать NSNotificationCenter
с пользовательским уведомлением, чтобы основной поток мог прослушивать обновления. (Обратите внимание, что уведомления всегда отправляются на поток, из которого они были отправлены, поэтому вам необходимо использовать метод performSelectorOnMainThread:
, чтобы убедиться, что уведомления доставляются в потоке пользовательского интерфейса.)
В вашей основной теме вы, Вам нужно добавить свой класс в качестве наблюдателя для получения этих уведомлений и обновления индикатора прогресса. Если вы хотите использовать привязки для индикатора прогресса, вы можете привязать его к свойству объекта контроллера, которое вы обновляете при получении уведомлений о ходе работы с NSOperation
.
Обертки Ben Copsey ASIHTTPRequest
делают именно такие вещи.
Запрос является подклассом NSOperation
, и вы можете передать ему индикатор прогресса при создании экземпляра.
Код доступен для вас, если вы хотите посмотреть, как он работает.
Насколько я вижу, это нарушает шаблон MVC ... –
- 1. Привязать к общему свойству
- 2. Привязать к импортированному свойству Javascript
- 3. Привязать значение триггера к свойству
- 4. Как привязать TextBox к свойству в CodeBehind
- 5. Как привязать ярлык к свойству в Xamarin?
- 6. Как привязать свойство UIButton к другому свойству?
- 7. Как привязать данные JSON к свойству класса
- 8. Как привязать данные к свойству видимости
- 9. C# Привязать к индексированному свойству в коде
- 10. Привязать класс к свойству динамической службы
- 11. Привязать к свойству приложения в другом проекте
- 12. Привязать текстовый элемент textBox к свойству класса
- 13. Привязать действие к свойству UserControl в XAML
- 14. Привязать TextBox к свойству объекта в WPF
- 15. Привязать к вложенному свойству в ControlTemplate - Silverlight
- 16. CollectionViewSource будет привязать к свойству в одноточечном
- 17. WPF - привязать видимость UserControl к свойству
- 18. Привязать к свойству коллекции, объявленной в xaml
- 19. Как привязать данные к тексту меток к свойству базового объекта?
- 20. Как привязать ContextMenu.Visibility к элементу ListViewItem к свойству viewmodel?
- 21. Как привязать DataGridViewComboBoxColumn к свойству/методу объекта, который возвращает список?
- 22. Как привязать DataGrid к свойству второго уровня источника данных?
- 23. Как мне привязать результат метода view-model к свойству TextBox?
- 24. Как привязать несколько значений флажков к свойству модели в Mvc?
- 25. Как привязать выбранную текущую вкладку к свойству в области
- 26. Как мне привязать к другому свойству в ComboBox SelectedItem?
- 27. Как привязать редактируемый TextField к свойству только для чтения
- 28. Как привязать к определенному свойству в поле списка
- 29. Угловая 2 - как мне привязать атрибут SVG к свойству компонента?
- 30. Как я могу привязать к статическому свойству CLR?
В целом, это правильно, но обновления для NSProgressIndicator специально документированы как потокобезопасные. –
@Barry Wark: У вас есть ссылка, я ничего не нашел в документации. –
Могу ли я использовать 'perfomSelectorOnMainThread:' в ответ на сообщение KVO? –