0

次を使用してセルにラベルを追加すると:

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    [cell addSubView:someLabel];
}

キャッシュされたセルにラベルを追加するため、複数のセルにラベルを追加します。したがって、キャッシュされたセルを使用する tableView 内のすべてのセルに、私のラベルが表示されます。

誰かが方法を知っていますか?トン

4

5 に答える 5

1

セルが UITableViewCell のサブクラスである場合- (void)prepareForReuse、セルが返される直前に呼び出されるものをオーバーライドできます。- (UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier

これは、セルに「白紙の状態」を提供する方法ですが、キャッシュされたセルのみが再利用されます。

于 2010-03-01T03:50:45.010 に答える
0

私は時々このコードを使用します:(セル!= nilの場合)

NSArray *subviews = [[NSArray alloc] initWithArray:cell.contentView.subviews];
for (UIView *subview in subviews) {
    [subview removeFromSuperview];
}
[subviews release];

キャッシュされたセルのすべてのサブビューを削除します。

于 2010-09-10T10:18:35.240 に答える
0

各セルに現在ラベルが適用されているかどうかを追跡する必要があります。そこにcellForRowAtIndexPath:あるかどうかを確認し、ある場合は必要に応じて追加し、必要に応じて削除します。

于 2010-02-28T21:28:59.447 に答える