Düzeltemediğim rahatsız edici bir hata var.UITableViewCell - yeniden kullanmadan önce içeriğin nasıl sıfırlanacağı
CustomCell
var ve içinde nesnenin değerine göre rengini değiştiren bir alt görüm var.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"CustomCell";
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
if (cell == nil) {
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
MyObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
if ([object.redColor isEqualToNumber:[NSNumber numberWithBool:YES]]) {
cell.colorView.backgroundColor = [UIColor redColor];
}
else {
cell.colorView.backgroundColor = [UIColor clearColor];
}
return cell;
}
Bu benim tableview gelen redColor = YES
içeren bir satır silmek ve ben görünür değildi satırları göstermek için kayar dışında tüm çalışma gayet iyi. Görünür hale gelen ilk satır (yeniden kullanılabilir hücreyi yeniden kullanan ilk satır), bu satır redColor = NO
olsa bile kırmızı renge sahiptir. Tekrar kaydırıp hücreyi gizleyip tekrar gösterirsem, renk, olması gerektiği şekilde clearColor olarak ayarlanır.
Bunun nedeni, silinmiş olan hücreyi yeniden kullanmasıdır. Bu nedenle, yeniden kullanmadan önce hücre içeriğini sıfırlamaya çalışıyorum.
- (void)prepareForReuse {
[super prepareForReuse];
self.clearsContextBeforeDrawing = YES;
self.contentView.clearsContextBeforeDrawing = YES;
self.colorView.backgroundColor = [UIColor clearColor];
}
CustomCell.m
yılında Ama bu olmuyor. cellForRowAtIndexPath: bir hücreyi yeniden kullanırken her zaman tüm içeriği sıfırlamak gerekir Elma Doc tableView
tablo görünümün temsilci diyor.
İçeriği sıfırlamanın uygun yolu nedir? Süper görüntülemeden alt görüntülemeleri kaldırmak zorunda mıyım? Sen (örneğin arka plan rengi için) görünürlüğünü ancak verileri değiştirmek için bu tableview temsilci yöntemi kullanabilirsiniz peşin
Merhaba @SFF cevabımı kontrol edin. ,,, –