私は、データソースとしてNSMutableArrayを使用するUITableViewControllerを持っています。配列は、Webサービスを呼び出してデータを取得し、NSMutableArrayを生成することによって、最初はviewDidLoadメソッドに実装されます。その後、ユーザは(UISearchBar内に)検索タームを入力し、Searchを押してWebサービスを再実行してテーブルリストを再作成するオプションを持っています。この時点で、配列を空にして、Webサービスの結果からテーブルを再作成する必要があります。私の質問は、テーブルビューの再描画を怒らせることなくこれを行う正しい方法は何ですか? 2つのオプションがあります:目的C - NSMutableArrayでUITableViewControllerを空にしてリロードする正しい方法
[listArray removeAllObjects];次に、[[self tableView] reloadData];アレイを再増殖させる。
リストを最大200行に制限するので、200個の項目で配列を初期化し、検索の実行時に削除して再追加する代わりに[listArray replaceObjectAtIndex:を使用して各行を置き換えます。この場合、返される行数を保持し、 'tableView numberOfRowsInSection'メソッドでこれを使用するint変数が必要になるため、tableviewは返される行数のみを表示します。
希望がある!リストを再ロードするときに断続的なエラー(EXC_BAD_ACCESS)が発生したため、質問をしています。リストを空にして再ロードする方法と関係があると確信しています。 。
任意の助け理解、
ジョナサン
UPDATE:のviewDidLoadの配列を初期化する
コード:データが取得されたら、次のように
tableListDataArray = [[NSMutableArray alloc] init];
、それがアレイに追加され:
CustSuppListItem *custSuppItem = [[CustSuppListItem alloc] init];
[custSuppItem setAcCode:[jsonCustSuppRecord getStringForKey:@"acCode"]];
[custSuppItem setAcCompany:[jsonCustSuppRecord getStringForKey:@"acCompany"]];
[custSuppItem setAcContact:[jsonCustSuppRecord getStringForKey:@"acContact"]];
[custSuppItem setOsBalBase:[jsonCustSuppRecord getDoubleForKey:@"osBalBase"]];
[custSuppItem setAcAccStatus:[jsonCustSuppRecord getIntForKey:@"acAccStatus"]];
[tableListDataArray addObject:custSuppItem];
[custSuppItem release];
次のように10
配列は、deallocメソッドでリリースされています
[tableListDataArray release];
単に配列を置き換えるだけで、reloadDataを呼び出すだけで十分です。あなたが本当にしたいのでなければ、removeAllObjectsの必要はありません。あなたのエラーは、おそらくオートレリースされた配列の結果でしょう。配列変数と値の設定方法を宣言するコードを提供してください。 – Jeremy
こんにちはJeremy、返信いただきありがとうございます - 上記の私の元の質問に使用しているコードを追加しました。 –