Мои данные не отображаются в моем подклассе TTTableViewController. Почему бы и нет? - PullRequest
1 голос
/ 20 июня 2011

Вот фон: я инициализирую и устанавливаю источник данных в моем TTTableViewController примерно так:

- (void)createModel {
    TTSectionedDataSource *dataSource = [[[TTSectionedDataSource alloc] init] autorelease];
    dataSource.model = [[[LogsModel alloc] init] autorelease];
    self.dataSource = dataSource;
}

Модель представляет собой TTURLRequestModel, поэтому, когда ответ возвращается из модели,Я установил элементы и разделы источника данных в моем TTTableViewController следующим образом:

- (void)modelDidFinishLoad:(id<TTModel>)model {
    ((TTSectionedDataSource *)self.dataSource).items = ((LogsModel *)model).items;
    ((TTSectionedDataSource *)self.dataSource).sections = ((LogsModel *)model).sections;
    [super modelDidFinishLoad:model];
}

Эта проблема возникла, когда я переключился с использования жестко закодированных данных в моей модели на фактический запрос к веб-службе.Что я делаю неправильно?Я неправильно создаю модель?Или установить элементы и разделы в источнике данных в неправильном месте?Любые мысли или комментарии приветствуются и приветствуются.Спасибо!

Ответы [ 2 ]

1 голос
/ 20 июня 2011

Я бы порекомендовал взглянуть на демоверсию твиттера Three20 (TTTwitter).Three20 имеет упрощенный способ разделения моделей / источника данных и таблиц.

Контроллер должен только создавать источник данных, не «зная» об элементах и ​​разделах:

///////////////////////////////////////////////////////////////////////////////////////////////////
 - (void)createModel {
 self.dataSource = [[[TTTwitterSearchFeedDataSource alloc]
                  initWithSearchQuery:@"three20"] autorelease];
}
1 голос
/ 20 июня 2011

Наконец-то нашел причину для этого.В моем классе модели (LogsModel для кода выше) я реализовал метод - (BOOL)isLoaded, когда использовал жестко закодированные данные.Когда я переключился на выполнение запросов к веб-сервису, моя реализация isLoaded все время возвращала NO, поэтому TTTableViewController не отображал мои данные.Я удалил свою реализацию - (BOOL)isLoaded, и проблема была решена.

...