私は、accessoryView 画像といくつかのカスタム ボタンの 2 つの画像を設定するカスタム セルを使用しています。accessoriesView イメージが最初に表示されます。ユーザーが行をスワイプすると、accessoryView 画像が非表示になり、ボタンが再表示されます。ユーザーが「スワイプを解除」(または別の場所をタップ) すると、ボタンが非表示になり、accessoryView が表示されます。次の場合を除いて、これはすべて正常に機能します。
1)画面を読み込みます。accessoriesView 画像があり、ボタンが隠されています。良い。
2)行をスワイプします。accessoriesView が消え、ボタンが表示されます。良い。
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;
何か案は?