3

テーブルビューの最後のセルとして「読み込み中」のセルをハードコーディングしました。これが生成されたら、いくつかのメソッドを呼び出してWebサービスから新しいデータを読み込み、応答を受け取ったらデータを保存して通知を送信しますテーブルビューでreloadDataを呼び出します。

同じことをしたいのですが、テーブルの最初のセルに対してです。

私のテーブルは時間の関数であるため、下にスクロールすると後の日付のアイテムが表示されます。ユーザーが上にスクロールして前のアイテムをロードできるようにするという考え方です。

この読み込みセルを非表示にするための初期オフセットを正常に設定できないようです。表示されている場合は、もちろん以前のデータの読み込みが開始されるためです。私は知ってscrollToRowAtIndexPath:atScrollPosition:animated:いますが、それを呼び出すための適切な場所を見つけることができません(インデックスパス:1:0行1セクション0)。

前に述べたように、セルが作成される前に、この表示セクションを設定する必要があります。

テーブルビューの開始時にこの種のセルを試した人はいますか?

最初のセルが呼び出されて読み込まれる前に、テーブルビューの最初の表示セクションを設定するにはどうすればよいですか?

ここでもっと派手なことをするべきですか?tableviewHeaderを持っているように、それが表示されたら、ローダーであるインデックスパス0:0に行を挿入し、reloadTableの後に削除しますか?

4

1 に答える 1

6

でオフセットするのではなく、contentInsetを使用しましたviewDidLoad

[self.tableView setContentInset:UIEdgeInsetsMake(-50,0,0,0)];

インデックスパス[0,0]の行が生成されると、挿入図をリセットします。これは、tableView:cellForRoWAtIndexPath:

[self.tableView setContentInset:UIEdgeInsetsMake(0,0,0,0)];

テーブルビューでreloadDataをメッセージ送信する前に、そのインセットを次のように戻します。

- (void)reload{
    [self.tableView setContentInset:UIEdgeInsetsMake(-50,0,0,0)];
    [self.tableView reloadData];
}

これは、ロードセルが表示されたときだけ画面に表示され、新しいデータが入力されてテーブルがリロードされたときに、オフセットを元に戻すことを意味します。

于 2012-05-17T18:41:49.077 に答える