使用:objective-C
我有一个带有行的tableView。我希望用户可以将单元格移到一边,并向他显示其他操作。
做了什么:
目前在xib文件和xib文件中的单元格中单独创建表。 细胞非常简单
我想移动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);
}];
}
所以想要滑动单元格并使用动画移动一段距离以显示隐藏按钮。
此代码的结果 - 像我想要的那样:
但是如果你开始滚动tableView,你可以随机(取决于滚动速度)位置获得重复的“刷卡单元格”:
知道为什么会这样吗?
答案 0 :(得分:2)
您可能必须在– tableView:cellForRowAtIndexPath:
中清除/重置单元格的滑动状态。因为细胞被重复使用(我假设你这样做是为了tableview
的良好表现所需要的。可能是这样的 -
self.viewWIthLabel.frame = CGRectMake(0, 0, self.viewWIthLabel.frame.size.width, self.viewWIthLabel.frame.size.height);