2010-09-06 5 views
1

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

Надеюсь, что это какой-то смысл! Я использую Objective-C и делаю mac dev (не iphone).

В любом случае, есть ли способ обойти это?

Заранее спасибо.

+0

Что такое источник данных? Это через привязку или обычай? –

ответ

3

NSTableView запрашивает данные, вероятно, потому что вы сказали ему, что говорят 20 строк данных. Как только он узнает, что есть 20 строк, он начнет просить об этом.

Если вы используете источник данных NSTableView Delegate, его легко, просто верните 0 для количества строк, пока все не будет готово, а затем верните количество строк, которые есть.

IE вам нужны эти вызовы в делегат:

– numberOfRowsInTableView: 
– tableView:objectValueForTableColumn:row: 

Если вы не используете NSTableViewDataSource, и подключены до контроллера в Interface Builder, то вам придется каким-то образом дать только контроллеру данные когда все готово.

+0

спасибо! что, похоже, сработало :) – 2010-09-06 19:49:52

1

Похоже, вы заселяете табличный вид асинхронно? Если это так, вы можете вызвать reloadData или reloadDataForRowIndexes:columnIndexes: в представлении таблицы в методе, который обрабатывает ответ, чтобы обновить представление таблицы после загрузки данных.

Смежные вопросы