NSOutlineView не обновляет / отображает весь контент - PullRequest
0 голосов
/ 20 ноября 2010

У меня есть NSOutlineView, его содержимое привязано к соответствующему NSTreeController. Он отлично работает, за исключением случаев, когда мое приложение загружается, отображает только около половины содержимого NSOutlineView.

Если я cmd + вкладка и обратно, все содержимое отображается. Если я щелкаю пустые строки, где, как я знаю, должно быть содержимое, внезапно появляется текст в строке, по которой я щелкнул. Так что контент там, он просто не обновляется должным образом. Думаю, мне нужно отправить NSOutlineView сообщение с запросом о необходимости отображения или что-то подобное, но я не совсем уверен, где.

Это кажется мне довольно нелогичным - NSOutlineView, безусловно, должен правильно отображать свое содержимое при привязке. Есть ли что-то очевидное, чего мне не хватает?

Ответы [ 3 ]

0 голосов
/ 20 ноября 2010

Я отказался от привязки этого NSOutlineView и переключился на использование NSOutlineViewDataSource вместо этого. Я подозреваю, что некоторая часть моего кода не была полностью совместима с KVO, и это делало его неработоспособным.

0 голосов
/ 18 декабря 2010

При использовании KVO вы можете вызывать уведомления об изменениях, отправляя willChangeValueForKey: и didChangeValueForKey: объекту (скорее всего, контроллеру), которому принадлежит свойство, которое связаноNSOutlineView.Эти сообщения могут быть отправлены из обработчика awakeFromNib: или applicationDidFinishLaunching:, например reloadData.

Если вы добавите (минимальный) пример кода к вашему вопросу, мы можемчтобы выяснить, решит ли это проблему или есть что-то еще, что необходимо решить.

0 голосов
/ 20 ноября 2010

Согласно документации Apple, вы должны всегда отправлять -reloadData в контурный вид после его создания. В вашем случае это было бы там, где ваша NIB завершила загрузку (-awakeFromNib? -applicationDidFinishLaunching? Зависит от реализации).

Вы отправили в виде схемы сообщение -reloadData? Это всегда работает для меня.

...