cell.accessory Просмотреть изображение, появляющееся, когда оно не должно быть только для многократно используемых ячеек

Я использую пользовательские ячейки, где я устанавливаю два изображения, изображение accessoryView и несколько пользовательских кнопок. Изображение accessoryView появляется первоначально. Когда пользователь проводит пальцем по строке, я скрываю изображение accessoryView и раскрываю кнопки. Когда пользователь "оттирает" (или нажимает куда-то еще), я скрываю кнопки и показываю accessoryView. Это все прекрасно работает, кроме случаев, когда я делаю следующее:

1) Загрузите экран. accessoryView изображение там и кнопки скрыты. Хорошо.

2) Проведите ряд. accessoryView исчезает, и появляются кнопки. Хорошо.

3) Прокрутите таблицу вниз, чтобы увидеть больше ячеек (я использую многоразовые ячейки). Все новые ячейки показаны с accessoryView и без кнопок. Хорошо, как и ожидалось.

4) Прокрутите обратно до исходной ячейки, которую я пролистал. Я вижу и изображение accessoryView и кнопки как это:

Вот некоторый код: в моем собственном объекте ячейки у меня есть:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];
    if (selected)
    {
        self.accessoryView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"arrow-right-black.png"]];
        UIImage *selectedRowImage = [UIImage imageNamed:@"table-selectedcellbg-red-45px-stretch.png"];
        self.selectedBackgroundView = [[UIImageView alloc]initWithImage:[selectedRowImage resizableImageWithCapInsets:UIEdgeInsetsMake(selectedRowImage.size.height, selectedRowImage.size.width/2, selectedRowImage.size.height, selectedRowImage.size.width/2)]];
    }
    else
    {
        self.accessoryView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"arrow-right.png"]];
        self.selectedBackgroundView = [[UIImageView alloc]initWithImage:[[UIImage alloc]init]];
    }
}

- (void)swipeCell 
{
    [self setSelected:NO animated:NO];
    self.accessoryView = nil;

    swipeButtons.hidden = NO;
}
- (void)unswipeCell
{
    [self setSelected:NO animated:NO];
    self.accessoryView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"arrow-right.png"]];
    swipeButtons.hidden = YES; 
}

В моем cellForRowAtIndexPath я проверяю, была ли сотрена ячейка:

if (self.indexPathSwipeButton != nil && self.indexPathSwipeButton.row == indexPath.row)
{
    [cell swipeCell];
}
else
{
    [cell unswipeCell];
}
return cell;

Есть идеи?

1 ответ

Ты используешь [self setSelected:NO animated:NO]; в методе (void)swipeCell и в методе - (void)unswipeCell.Но в (void)swipeCell так должно быть [self setSelected:YES animated:NO];,

Надеюсь, поможет

Другие вопросы по тегам