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];
,
Надеюсь, поможет