0

作成した行にデータを挿入しようとしていますが、データの最後の行のみが挿入されます。誰かがこのエラーを回避する方法を提案できますか?cellForRowAtIndexPath私のコードは次のとおりです。

NSInteger counter = [myArray count];
if (myArray.count > 0){

    for (int i = indexPath.section; i<indexPath.section+1; i++){
        for(int a = 0 ; a < counter; a++) {
            NSDictionary *dic = [counterArray objectAtIndex:i];
            NSString *dateString = [dic valueForKey:@"date"];

            NSDictionary *dic2 = [myArray objectAtIndex:a];
            NSString *dateString2 = [dic2 valueForKey:@"date"];

            if ([dateString isEqualToString:dateString2]){
                cell.bookTitle.text = [dic2 objectForKey:@"name"];
            }
        }
    }   
}
return cell;

}

これまでのところ、次のようになります。

そして、配列は実際には次のようになります。

(
  {
    BIBNo = 187883;
    date = "13/08/2012";
    itemSequence = 000010;
    name = "Positive thinking / Susan Quilliam.";
    noOfRenewal = 2;
    number = 000187899;
    status = "Normal Loan";
    time = "24:00";
    type = Loans;
  },
  {
    BIBNo = 161816;
    date = "14/08/2012";
    itemSequence = 000010;
    name = "Malaysian Q & As / compiled by Survey & Interview Department ; illustrations by Exodus.";
    noOfRenewal = 0;
    number = 000161817;
    status = "Normal Loan";
    time = "24:00";
    type = Loans;
  },
  {
    BIBNo = 187882;
    date = "14/08/2012";
    itemSequence = 000010;
    name = "Increasing confidence / Philippa Davies.";
    noOfRenewal = 0;
    number = 000187907;
    status = "Normal Loan";
    time = "24:00";
    type = Loans;
  },
  {
    BIBNo = 291054;
    date = "14/08/2012";
    itemSequence = 000010;
    name = "iPhone application development for IOS 4 / Duncan Campbell.";
    noOfRenewal = 2;
    number = 000291054;
    status = "Normal Loan";
    time = "24:00";
    type = Loans;
  },
  {
    BIBNo = 244441;
    date = "15/08/2012";
    itemSequence = 000010;
    name = "Coach : lessons on the game of life / Michael Lewis.";
    noOfRenewal = 1;
    number = 000244441;
    status = "Normal Loan";
    time = "24:00";
    type = Loans;
  },
  {
    BIBNo = 290408;
    date = "15/08/2012";
    itemSequence = 000010;
    name = "Sams teach yourself iPhone application development in 24 hours / John Ray.";
    noOfRenewal = 3;
    number = 000290408;
    status = "Normal Loan";
    time = "24:00";
    type = Loans;
  }
)
4

3 に答える 3

0

私も以前にこの種の問題に遭遇しましたが、これはセル識別子が原因です。これはすべてのセルで同じであるため、単一のセルをデキューし、それをすべての行に使用します。私は非常にハッキーでおそらく理想的な方法ではない方法でこれを解決することになります..しかしそれは機能します。

私は次のようにセル識別子を実装します:

NSString *CellIdentifier = [NSString stringWithFormat:@"cell-%d-%d", indexPath.section, indexPath.row];

これにより、再利用される特定のセルがその特定のセクション/行に使用されることが保証されます。

于 2012-07-26T08:56:35.607 に答える
0

私が書いたこの厄介なコードを続ける方法がわからないので、セクションと行を動的に挿入する方法について人々にアドバイスを与えるために別の質問を開き、テーブル部分のコードをやり直しました、そしてそれは完璧に機能します!:)

リンクはここにあります:iOS NSDictionaryを使用して、セクションと行にデータをロードします

ここでは、NSDictionaryを使用して、日付に応じて動的にデータを挿入しました。:)それが私と同じ問題を抱えている人に役立つことを願っています!

于 2012-07-27T05:59:16.547 に答える
0

このようなことをする必要があります。

Nsarrayオブジェクトを保持するmainArrayのようなNSArray名を作成します(これらはセクション用であると仮定します)。これらのセクション配列にはNSDictionaryオブジェクトがあります(これらは各セクションの行であると仮定します)

次に、このようにループを実行できます

for(unsigned int counter = 0;counter<[mainArray count];counter++){
  NSArray *sectionArray = [mainArray objectAtIndex:indexPath.section];
 for(unsigned int counter1 = 0;counter1 < [sectionArray count];counter++ ){
   NSDictionary *mainDataDictionary = [sectionArray objectAtIndex:indexPath.row];
  //Write your code here for a particular cell/row.
 }

}

これに従って numberOfRowsInSection も変更する必要があります。

于 2012-07-26T09:25:28.663 に答える