2009-08-19 8 views
0

ウェブサービスから約60〜80のデータをロードしています。テーブルビュー - 私の周り - Google# - iPhoneで

しかし、あなたが見ている場合は、より多くのデータが表示されることをクリックすると> - 「私の周り - グーグル - アプリケーション」 - >それは、検索結果としてのtableViewを持って - >テーブルビューで最後のセルがビューのように書かれているその他の を

私のアプリケーションに同じエフェクト/ロジックを実装したいのですが、どうすればいいのでしょうか?

私に助けてもらえますか?

答えて

2

Aviad Ben Dovとrkbangは、役に立つアドバイスを提供しています。それに加えて:

「詳細表示」セルのタッチに応答するには、UITableViewの代理人であるいずれのオブジェクトにもtableView:willSelectRowAtIndexPath:メソッド(UITableViewDelegateプロトコル)を書き込みます。この方法では、より多くのデータをロードするために電話をかけると、(より多くのボタンのような振る舞いである)行が選択されたままにしないので、nilを返す:あなたのロード機能で

- (NSIndexPath *)tableView:(UITableView *)tableView 
    willSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [self loadMoreData]; 
    return nil; // Don't leave this row selected. 
} 

、取得するには、サーバーの呼び出しを行いますデータを解析し、テーブルをリロードします。 、私は何でもあなたのクラスにそのデータをサーバの応答を解析して追加する方法parseIntoDataSourceを想定してい

#import "HTTPHelper.h" 

// ... later ... 

- (void) loadMoreData { 
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; 
    NSString* dataStr = nil; 
    NSError* error = [[HTTPHelper sharedInstance] 
        synchronousGetURLAsString:@"http://server.com/mystuff" 
        replyData:&dataStr]; 
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; 
    if (error) { 
    [self displayErrorMessage:error]; 
    } else { 
    [self parseIntoDataSource:dataStr]; 
    [tableView reloadData]; 
    } 
} 

この最後の関数で:あなたはサーバの応答を待っている間、それは忙しい指標を与えることも丁寧ですtableView:cellForRowAtIndexPath:メソッド(UITableViewDataSourceプロトコルの)によって与えられるテーブルセルのデータを提供するために使用します。

このコードでもHTTPHelperからthe moriarty libraryを使用しています。

XMLを解析する場合は、SDK独自のNSXMLParserを使用できます。 The TouchXML libraryも利用可能で、少し汚れたデータ(通常はXML標準に準拠していない現実のhtmlのような)を少し強固にサポートしています。JSONを解析するには、the json-frameworkを使用できます。これには、カテゴリベースのインターフェイスが非常に簡単です。

+0

tableViewを使用する正当な理由はありますか?willSelectRowAtIndexPath:tableView:didSelectRowAtIndexPath :? –

1

まず、アプリケーションでページングを行う必要があります。つまり、すべてのアイテムを返すWebサービスではなく、結果を取得する場所を意味するoffsetというパラメータと、取得する結果の数を示すlengthというパラメータを追加するだけで、それらの一部を返す必要があります。つまり、最初の通話は0, 20で、2番目の通話は20, 20で、3番目の通話は40, 20などです(ページあたり20個の通話が必要な場合)。

次に、クリック可能なアイテムをテーブルビューに追加します。これは、デリゲートによって返される特別なセクションで、クリックすると次のページのWebサービスを呼び出し、バックエンド配列を更新して行の挿入メッセージを使用して結果をテーブルビューに追加する単一の行を含みます。

1

いつでもテーブルビューをカスタマイズできます。たとえば、Wanaには25個のアイテムしか表示されません。次にnumberOfRowsInSection関数で26を返し、cellForRowAtrIndexPathに最後の行をチェックします。最後の行であれば、そのテキストは「もっと見る」となります。

同様に、selectedRowAtIndexPathでは、行数をチェックして、最後のロードであるかどうかを確認することができます。25.最初の25は1、2番目の25は整数インデックスを保持します。この方法でデータを再度取得する必要はありませんもう一度、NSMutableArrayにデータを格納することができます。

関連する問題