我的数据没有显示在我的TTTableViewController子类中。为什么不?

时间:2011-06-20 07:03:55

标签: three20

以下是背景信息:我正在TTTableViewController初始化并设置dataSource,如下所示:

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

模型是TTURLRequestModel,所以当从模型返回响应时,我在TTTableViewController中设置了dataSource的项目和部分,如下所示:

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

当我从模型中使用硬编码数据切换到实际向Web服务发出请求时,出现了这个问题。我究竟做错了什么?我是否错误地创建了模型?或者设置项目&amp;关于dataSource的部分在错误的地方?任何想法或评论都欢迎和赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

终于找到了原因。在我的模型类(上面代码的LogsModel)中,当我使用硬编码数据时,我实现了- (BOOL)isLoaded方法。当我切换到向Web服务发出请求时,isLoaded的实现碰巧一直返回NO,因此TTTableViewController没有显示我的数据。我删除了- (BOOL)isLoaded的实现,问题解决了。

答案 1 :(得分:1)

我建议你看一下three20的twitter演示应用程序(TTTwitter)。 Three20有一种简化的方法来分离模型/数据源和表格。

控制器应该只创建数据源,而不“知道”项目和部分:

///////////////////////////////////////////////////////////////////////////////////////////////////
 - (void)createModel {
 self.dataSource = [[[TTTwitterSearchFeedDataSource alloc]
                  initWithSearchQuery:@"three20"] autorelease];
}