カスタムセルがありUITableView
ます。これらのセルにはいくつかのテキストフィールドが含まれています。ここで、textFields にデータを入力し、テーブル ビューのデータをスクロールすると、新しいセルが作成されるたびにデータが消えてしまうと思います。
配列を使用してその中にすべてのセルを挿入することでこの問題を解決しましたが、ここではセルを再利用できないため、メモリを浪費しています。
この振る舞いをどのように処理すればよいか教えていただけますか?
カスタムセルがありUITableView
ます。これらのセルにはいくつかのテキストフィールドが含まれています。ここで、textFields にデータを入力し、テーブル ビューのデータをスクロールすると、新しいセルが作成されるたびにデータが消えてしまうと思います。
配列を使用してその中にすべてのセルを挿入することでこの問題を解決しましたが、ここではセルを再利用できないため、メモリを浪費しています。
この振る舞いをどのように処理すればよいか教えていただけますか?
配列を使用してすべてのテキスト フィールドの値を格納し、目的のテキスト フィールドの値を
- (UITableViewCell *)tableView:(UITableView *)tTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法
メソッドでセルを作成する方法に関係があるように思えますtableView:cellForRowAtIndexPath:
。しかし、あなたの実装を見なければ、私は一般的な提案しかできません (あなたの実装を質問に追加して、人々が回答をもう少し具体的にできるようにします)。
メモリが心配な場合はUITableView's
、次の方法でセルを作成して、組み込みのセル再利用機能を使用してください。
NSString *identifier = @"reuseIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
}
cell.textLabel.text = @"text relating to index path";
上記はtableView
、再利用できるセルがあるかどうかをチェックします。何もない場合は nil が返されます。initWithStyle:reuseIdentifier:
これは、セルがスクロールされて表示されなくなった場合に再利用に適しているとマークするメソッドを使用してセルを作成する場所です。これは、最大で、一度に表示されるセルの総数のみをインスタンス化することを意味し、テーブルのメモリ フットプリントを適切かつ低く保ちます。
セルの外側に nil チェックを設定していることに注意してください。これは、再利用可能なセルを取得した場合に、メソッドに渡されるtextField.text
ものに関連するテキスト コンテンツで古いテキスト コンテンツを上書きすることを保証するためです。indexPath