我使用了自定义UITableViewCell。我在其中添加了一个Gesture用于滑动选项,我的tableView
中有20个单元格。如果我刷我的第一个单元格并滚动意味着我的第11个单元格也更新为我的第一个单元格值。
以下是我的代码snipet。
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = (CustomCell*)
[tableView dequeueReusableCellWithIdentifier:@"CustomCellId”];
[cell setRequestCellDelegate:self];
[cell.swipeLeft addTarget:self action:@selector(swipeLeftAction:)];
cell.tag = indexPath.row;
cell.swipeLeft.delegate = self;
cell.swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
cell.indexpath = indexPath;
[cell.swipeRight addTarget:self action:@selector(swipeRightAction:)];
cell.swipeRight.delegate = self;
cell.swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
cell.tableHoldButtn.tag = indexPath.row;
return cell;
}
请帮助找到解决方案。
答案 0 :(得分:1)
这种情况正好发生,因为只要您的第一个刷卡单元离开屏幕,它就会被放入队列中以便重复使用。然后,当你的第10个单元格出现在屏幕上时,它不会被创建,而是第一个单元格被重用。并且由于你已经滑过它,它将以与离开屏幕完全相同的状态出列。
您应该跟踪表视图控制器中应更改哪个单元格的更改,并在您的cellForIndexPath数据源方法中恢复该状态。
答案 1 :(得分:0)
我认为最好使用tableView委托方法代替应用手势。你可以用
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;
此外,您还可以通过以下方式自定义编辑按钮外观:
-(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath;
答案 2 :(得分:0)
CustomCell *cell = (CustomCell*)
[tableView dequeueReusableCellWithIdentifier:[NSString stringwithFormat:"%ld",indexPath.row]];
重用标识符更改为indexPath.row
的字符串我希望我的实验可以帮到你
答案 3 :(得分:0)
注意:不要在其他地方注册单元格,在其他地方删除注册单元格(可能在viewdidLoad中)
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// CustomCell *cell = (CustomCell*)
// [tableView dequeueReusableCellWithIdentifier:@"CustomCellId”];
// need not register cell in other ,like viewdidLoad
CustomCell* cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"%@",indexPath.row]];
if (!cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:[NSString stringWithFormat:@"%@",indexPath.row]];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
[cell setRequestCellDelegate:self];
[cell.swipeLeft addTarget:self action:@selector(swipeLeftAction:)];
cell.tag = indexPath.row;
cell.swipeLeft.delegate = self;
cell.swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
cell.indexpath = indexPath;
[cell.swipeRight addTarget:self action:@selector(swipeRightAction:)];
cell.swipeRight.delegate = self;
cell.swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
cell.tableHoldButtn.tag = indexPath.row;
return cell;
}