NSTableView на основе вида перерисовывается только при изменении фокуса - PullRequest
0 голосов
/ 11 апреля 2019

Я пишу простое приложение Cocoa с графическим интерфейсом, которое состоит только из простой таблицы, данные которой могут иногда обновляться.Но когда данные действительно обновляются, строки таблицы в большинстве случаев полностью исчезают.Но как только я меняю фокус (нажмите на рабочем столе, если мое приложение является основным окном, или щелкните на окне приложения, если это не так), все отображается правильно

Данные обрабатываются в отдельном одноэлементном классе, который запускает поток, которыйфактически следит за источником данных и публикует NSNotification при изменении данных.Контроллер окна получает это уведомление, извлекает новые данные и запускает [tableView reloadData] - вот с чего начинаются проблемы

Контроллер окна является источником данных и делегатом для таблицы и реализует метод numberOfRowsInTableView и метод viewForTableColumn.Когда возникает проблема, numberOfRowsInTableView вызывается и возвращает ненулевое значение, но viewForTableColumn вообще не вызывается

Я ожидаю, что таблица будет правильно перерисована при вызове [tableView reloadData] и везде, где мойфокус есть, но на практике все просто исчезает и перерисовывается только после смены фокуса

1 Ответ

0 голосов
/ 17 апреля 2019

Исправлено. Проблема была в обновлении GUI из фонового потока

...