如何使用滑动动作在动画中移动uitableViewCell中的单元格

时间:2014-09-06 14:17:59

标签: ios objective-c uitableview swipe

使用:objective-C

我有一个带有行的tableView。我希望用户可以将单元格移到一边,并向他显示其他操作。

做了什么:

目前在xib文件和xib文件中的单元格中单独创建表。 细胞非常简单 enter image description here

我想移动viewWIthLabel。 在使用动画的单元类文件中,我使用下一个代码

- (void)awakeFromNib
{
    UISwipeGestureRecognizer * leftGestrudeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeft:)];
leftGestrudeRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
    UISwipeGestureRecognizer * rightGestrudeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)];
rightGestrudeRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
[self addGestureRecognizer:rightGestrudeRecognizer];
[self addGestureRecognizer:leftGestrudeRecognizer];
}

和行动:

- (IBAction)swipeLeft:(id)sender{
NSLog(@"swipeL");
[UIView animateWithDuration:0.5 animations:^{
    self.viewWIthLabel.frame = CGRectMake(-100, 0, self.viewWIthLabel.frame.size.width, self.viewWIthLabel.frame.size.height);
} ];
}

 - (IBAction)swipeRight:(id)sender{
NSLog(@"swipeR");
[UIView animateWithDuration:.5 animations:^{
    self.viewWIthLabel.frame = CGRectMake(0, 0, self.viewWIthLabel.frame.size.width, self.viewWIthLabel.frame.size.height);
}];
}

所以想要滑动单元格并使用动画移动一段距离以显示隐藏按钮。

此代码的结果 - 像我想要的那样:

enter image description here enter image description here

但是如果你开始滚动tableView,你可以随机(取决于滚动速度)位置获得重复的“刷卡单元格”:

enter image description here

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

您可能必须在– tableView:cellForRowAtIndexPath:中清除/重置单元格的滑动状态。因为细胞被重复使用(我假设你这样做是为了tableview的良好表现所需要的。可能是这样的 -

 self.viewWIthLabel.frame = CGRectMake(0, 0, self.viewWIthLabel.frame.size.width, self.viewWIthLabel.frame.size.height);