0

UITableViewの最初の10個のセルのみを表示する方法はありますか?XMLファイルからUITableViewを入力しましたが、最初の10個のセルのみを表示したいと思います。問題は、UITableViewに複数のセクションとそれらのセクションの行があることです。行とセクションの数はユーザーごとに異なります。

残りのセルを非表示にするか、最初に表示しない(たとえば、cellForRowAtIndexPathにセルを追加しない)ことは可能ですか?cellForRowAtIndexPathメソッドが呼び出されるたびに+1になるカウンターをcellForRowAtIndexPathに設定しようとしました。カウンターをNSLogしたところ、80まで非常に大きくなり、UITableViewに30個のセルすらありませんでした。

ありがとう!

編集: 問題は、UITableViewをスクロールするたびに、(同じindexPathに対して)indexPathを超えてスクロールするたびにcellForRowAtIndexPathが呼び出されるため、カウンターが効果を発揮しないことです。

編集2: 動作しないと思ったので、ファイルにカウンターがあるようにXMLファイルを変更しました。これで、カウンターがxmlファイルから10より大きいかどうかを確認し、それを確認してcellForRowAtIndexPathのセルを変更できます。 。

4

2 に答える 2

5

の戻り値を変更することで、「読み込まれる」行の数を制限できます- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
       return 10; 
}

このアウェイ- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPathは10回しかコールされません。

あなたのカウンターについて:(あなたはおそらく間違っています)

として宣言しましたNSInteger *somensint;か?

NSInteger はプリミティブであり、オブジェクトではありません! 実際に行っているのは、NSInteger* が指しているメモリ アドレスをインクリメントすることです。NSInteger の長さは 4 バイトであるため、インクリメントするたびに、コンパイラはそれがポインターであるため、メモリ内の次の NSInteger にジャンプしたいと想定します。これが、4 の倍数を取得する理由です。*宣言するときに を削除するだけですNSInteger と、すべて設定する必要があります。

于 2012-09-17T23:37:59.040 に答える
1

これらは、実装したい 2 つの方法です。これにより、xml データを操作することなく、テーブルビューのセクションと行の数を制限できます。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
于 2012-09-17T23:38:22.753 に答える