2010-09-17 178 views
10

滑动删除功能在我的表格视图中不起作用。我已经在导航栏中实现了commitEditingStyle委托和编辑按钮。因此,当用户点击编辑按钮时,删除和添加按钮显示适当。但是,在滑动时,删除按钮不会出现,它似乎不会将滑动识别为setEditing方法的调用。滑动到删除不起作用

我再实施willBeginEditingRowAtIndexPath和didEndEditingRwoAtIndexPath代表如下:

-(void)tableView:(UITableView*)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath 

{ 
NSLog(@"WILL BEGIN EDITING"); 

[self.tableView setEditing:YES animated:YES]; 

} 


-(void)tableView:(UITableView*)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath 

{ 

[self.tableView setEditing:NO animated:YES]; 

} 

然而,这并没有任何效力,要么。可能的问题是什么?我已经为IB中的表格视图启用了多点触摸,并且每个单元格都有一个DetailDisclosureButton附件。

回答

7

对于滑动到删除的功能,你必须实现

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) 
     ; // Delete. 
} 

编辑:我没有读的问题不够好。

我已经注意到,要在模拟器中进行滑动拖动,我必须按住并暂停一会儿,然后选择单元格,然后才可以成功地向右滑动。

+0

是的,我已经实现了。我在上面提到过。我现在无法访问设备,因此正在模拟器上进行测试。这可能是模拟器的问题吗? – Nathan 2010-09-17 14:29:29

+0

所以你做到了。抱歉。以防万一,请检查我编辑的答案。模拟器不是触摸行为,特别是速度。 – 2010-09-17 14:37:03

+0

在模拟器上试过。没有工作。还在运行3.1.2的iPod Touch上安装该应用程序。滑动删除也不起作用。非常令人费解。林想知道如果我错过了一些代表实现? – Nathan 2010-09-17 14:43:28

0

你实现tableView:editingStyleForRowAtIndexPath:方法,并使其返回UITableViewCellEditingStyleDelete

+0

是的,我做到了。但是有一些额外的内容导致了这个问题。 – Nathan 2010-09-17 15:42:30

+0

查看我上面的答案。 – Nathan 2010-09-17 15:56:56

+0

很高兴我能够让你看到正确的代码块。像这样的调试问题通常很难 – 2010-09-17 16:55:39

4

我是做了的tableView如下:editingStyleForRowAtIndexPath:委托方法: -

if (self.editing == NO || !indexPath) 
{ 
    return UITableViewCellEditingStyleNone; 
} 

这本来仿佛回到编辑样式无没有选择indexPath。出于某种原因,每次执行滑动操作时,都会执行此特定条件。在评论上面的代码片段时,滑动删除操作工作正常。

谢谢大家的帮助。

4

您需要实现:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath; 


- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath; 

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath; 

有了这三样东西,你应该是好去。 (我错过了断commitEditingStyle,它从来没有做过

+1

我已经给出了这3个委托方法,但不工作。 – 2014-07-04 06:46:53

1

的关键,使其工作是落实:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath; 

还有要记得把它里面的“UITableViewDataSource”,而不是“的UITableViewDelegate

-2

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath委托方法也需要实现工作刷卡功能。

4

如果所有其他建议做无法帮助您检查代码中是否有平移手势识别器。如果你在某些低级视角下有这样的事情,它将不起作用。

+0

有同样的问题,但它与UITapGesture – 2015-05-28 11:09:00

+0

你是一个天才!我有一个难以拖动滑块几个月的问题,现在有一个tableviewCell,问题是我使用的框架中的一个平移手势识别器。 – 2017-03-26 09:21:51