2012-02-08 12 views
0

最初に15レコードをロードする必要があります。ユーザーがセルのさらに多くの行を表示すると、次の20レコードまたは使用可能なレコードをテーブルビューにロードする必要があります。私はこの質問を見ています。テーブルビューでさらにローをロードする

この機能は、appStoreでも見ることができます。次のレコード数をロードします。

解決策は次のとおりです。

`- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return self.numberOfRowsVisible; 
} 

-(void)moreButtonClickAction { 
    if (self.numberOfRowsVisible < self.maxNumberOfRows) 
     self.numberOfRowsVisible = MIN(self.numberOfRowsVisible + 10, self.maxRows); 
    [self.tableView reloadData]; 
} 

私は初期化され、ハードはnumberOfRowsInSectionで15

self.numberOfRowsVisible=[NSNumber numberWithInt:15]; 

としてnumberOfRowsVisibleためのviewDidLoadの値をコード化された - 私はこれが正しいかどうかを確認していません。 moreButtonClickAction

-(void)moreButtonClickAction { 
    if (self.numberOfRowsVisible < [self.arrayRecords count]) 
     self.numberOfRowsVisible = MIN(self.numberOfRowsVisible + 15, [self.arrayRecords count]); 
    [self.tableView reloadData]; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 

    return MIN([self.arrayRecords count], 15); 
} 

これは私がSOに残って上記の提案に合わせて自分のコードを編集した方法です。しかし、これは動作していません。 MINに問題があるようです。私は現時点ではMACにいないので、私は正確な警告/エラーを覚えていない。誰かが私を助けてくれました。

+0

何がself.arrayRecordsですか? – mariusLAN

+0

'self.arrayRecords'には1000個のレコードのようなすべてのレコードが含まれています。この配列を使って一度に15個だけ表示しなければなりません。 – shajem

答えて

1

1)NSNumberオブジェクトを使用しないでください。平易な整数が使用します。 2)表示したい現在の行数を表示し、15で初期化し、クラスインスタンスに保持する整数変数を持たないのはなぜですか。 3)MINを使用する必要はありません。

return [self.arrayRecords count] < self.numberOfRowsVisible ? [self.arrayRecords count] : self.numberOfRowsVisible; 
+0

'moreButtonClickAction'メソッドはどのように見えますか? – shajem

+0

numberOfRowsVisibleが整数型であれば、あなたは持っているものを使うことができます。 –

1

可能なすべてのエントリを表示するには、MINではなくMAXを使用する必要があります。

+0

self.numberOfRowsVisibleはNSNumberです。だから私はこれをMINかMAXの中で使うことができますか? – shajem

+0

MAXには、intValueでキャストすることができるIntegersが必要です。ちょうどそれをチェーン – mariusLAN

+0

あなたはただの整数にそれを変更する必要があります。このコードではNSNumberを使用する必要はありません。他の場合はNSNumberを変換することができます。 NSNumberは数値ではなく数値オブジェクトです。 –

1

numberOfRowsInSectionは整数を返さなければなりません。 self.numberOfRowsVisibleは整数ではありません。

のviewDidLoad:

self.numberOfRowsVisible=15; 

主な実装:私の頭の上から

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return self.numberOfRowsVisible; 
} 

-(void)moreButtonClickAction { 
    if (self.numberOfRowsVisible < [self.arrayRecords count]) { 
     self.numberOfRowsVisible += 15; 
     if (self.numberOfRowsVisible > [self.arrayRecords count]) { 
      self.numberOfRowsVisible = [self.arrayRecords count]; 
     } 
    } 
    [self.tableView reloadData]; 
} 

、コードが再ファクタリングで行うことができます。

+0

a8レコードがあればどうなるでしょうか?最初は15個のレコードをロードし、次に3個のレコードをロードする必要があります。しかし、 'self.numberOfRowsVisible'を返すと、エラーが発生します。どうすればそれを修正できますか? – shajem

+0

上記のコードは15で始まります。別の15を追加し、18より大きい(最大カウント)ことを検出して18に減らします。修正するものはありません。 – ader

関連する問題