2011-06-20 4 views
1

が背景だ:自分のデータがTTTableViewControllerサブクラスに表示されていません。何故なの?ここ

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

モデルがTTURLRequestModelので、レスポンスがモデルから返されたとき、私はデータソースの項目やセクションを設定しますので、ように私は私のTTTableViewControllerでDataSourceを初期化して設定していますそのように私のTTTableViewControllerに:私は実際にWebサービスへの要求を行うには、私のモデルでハードコーディングされたデータを使用してから切り替えたときに

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

この問題は、思い付きました。私は間違って何をしていますか?モデルを間違って作成していますか?または、データソースの項目&を間違った場所に設定していますか?どんな考えやコメントも大歓迎であり、感謝しています。ありがとう!

答えて

1

最後にこの理由が見つかりました。私のモデルクラス(上のコードのLogsModel)では、ハードコードされたデータを使用していたときに- (BOOL)isLoadedメソッドを実装しました。 Webサービスへのリクエストに切り替えたとき、私の実装であるisLoadedは常にNOを返すようになったので、TTTableViewControllerは自分のデータを表示していませんでした。 - (BOOL)isLoadedの実装を削除し、問題は解決されました。

+0

あなたは、あなたがisLoadedメソッドを実装する方法を示すことができます。 – bluezald

+0

@Bacalso Vincent - 私は自分の答えを更新しました。解決策は、 ' - (BOOL)isLoaded'のカスタム実装を削除することです。 –

1

私は、three20のtwitterデモアプリ(TTTwitter)を見てみることをお勧めします。 Three20では、モデル/データソースとテーブルを簡単に分離することができます。

コントローラはアイテムのみとセクションについて「知っている」せずに、データソースを作成する必要があります。私は私の問題はこれと似ていると思うので、

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