0

私は最初にWebサービスの呼び出しでテーブルビューにロードしている約20のデータを取得し、20の数に達したときにビューのスクロールを開始すると、次の20の数のサービスを呼び出す必要があるプロジェクトに取り組んでいます。 、Facebookのように。

これは、データが終了し、前の呼び出しの最後のデータからテーブルビューにロードされるまで、次の20ごとに実行する必要があります。前のデータを下にスクロールすると、すべてのデータを表示できます。また、20番目のセルの後でテーブルを上にスクロールすると、「より多くのデータの読み込み」を表示する必要があります。

私を助けてください !

ありがとう、

4

2 に答える 2

1

UITableViewDelegateメソッドwillDisplayCellを追加します

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *) cell     forRowAtIndexPath:(NSIndexPath *)indexPath
{
    int count = [yourDataSource count];;

    if(indexPath.row == count - 1) // If going to display last row available in your source
    {
        //totalPageCount is the total pages available in the server. This needs to be stored on initial server call
        //currentIndex is the index of page last retreived from server. This needs to be incremented every time new page is retreived.
        if(currentIndex <= totalPageCount) 
        {
            [self getContentsForPage:currentIndex];
        }
        else
        {
            self.tableView.tableFooterView = nil; //You can add an activity indicator in tableview's footer in viewDidLoad to show a loading status to user.
        }

    }
}
于 2012-11-15T06:40:17.043 に答える
1

プライベートオフセット変数を作成し、ロードが成功するたびにそれを増やしてください。
これが GET パラメーターを取得する Web サービスであるとしましょう。

http://server.com/?offset=0&amount=20

Objective C コードは次のようになります。

ヘッダー ファイル内:

@interface YourClass
{
   uint _offset;
}
@end

実装ファイル:

- (void)viewDidLoad {
    _offset = 0;
}

- (void)loadFromServer {
    NSString *stringURL = [NSString stringWithFormat:@"%@/%@", kServer, _offset];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:stringURL]];
    NSString *params = [NSString stringWithFormat:@"offset=%i&amount=20", _offset];
    NSData *postData = [params dataUsingEncoding:NSUTF8StringEncoding];

    request.HTTPMethod = @"GET";
    request.HTTPBody = postData;

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {

    if (error) {
        NSLog(@"Error: %@", error);
    }else {
        NSError *jsonError;
        NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&jsonError];

        _offset += 20;
    }
}];

}

于 2012-11-13T08:19:27.213 に答える