以下是背景信息:我正在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的部分在错误的地方?任何想法或评论都欢迎和赞赏。谢谢!
答案 0 :(得分:1)
- (BOOL)isLoaded
方法。当我切换到向Web服务发出请求时,isLoaded
的实现碰巧一直返回NO,因此TTTableViewController没有显示我的数据。我删除了- (BOOL)isLoaded
的实现,问题解决了。
答案 1 :(得分:1)
我建议你看一下three20的twitter演示应用程序(TTTwitter)。 Three20有一种简化的方法来分离模型/数据源和表格。
控制器应该只创建数据源,而不“知道”项目和部分:
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)createModel {
self.dataSource = [[[TTTwitterSearchFeedDataSource alloc]
initWithSearchQuery:@"three20"] autorelease];
}