2011-06-20 57 views
1

這裏的背景:我初始化和喜歡設置DataSource在我TTTableViewController這樣:我的數據沒有顯示在我的TTTableViewController子類中。爲什麼不?

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

該模型是一個TTURLRequestModel,所以當響應從模型回來後,我設置DataSource的項目和部分在我TTTableViewController像這樣:

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

這個問題上來,當我從我的模型中使用硬編碼的數據轉換成實際進行Web服務請求。我究竟做錯了什麼?我錯誤地創建模型?或者將dataSource中的項目&部分設置在錯誤的地方?任何想法或意見,歡迎和讚賞。謝謝!

回答

1

終於找到了原因。在我的模型類(上述代碼的LogsModel)中,當我使用硬編碼數據時,我實現了- (BOOL)isLoaded方法。當我切換到向Web服務發出請求時,我的執行isLoaded恰好總是返回NO,因此TTTableViewController未顯示我的數據。我刪除了我的執行- (BOOL)isLoaded,問題解決了。

+0

你可以告訴你如何實現isLoaded方法,因爲我覺得我的問題是與此類似。 – bluezald

+0

@Bacalso文森特 - 我更新了我的答案。解決方法是刪除任何自定義的' - (BOOL)isLoaded'實現。 –

1

我會推薦看看three20的twitter演示程序(TTTwitter)。 Three20具有分離模型/數據源和表格的簡化方法。

控制器應該只創建數據源,而無需「知道」有關的項目和部分:

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