滑动到删除不起作用

时间:2010-09-17 14:09:35

标签: iphone uitableview uiview ios4

我的表格视图中的滑动删除功能不起作用。我已经在导航栏中实现了commitEditingStyle委托和Edit按钮。因此,当用户单击编辑按钮时,删除和添加按钮会正确显示。但是,在滑动时,删除按钮不会出现,似乎它无法识别滑动作为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 个答案:

答案 0 :(得分:7)

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

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

编辑:我没有很好地阅读这个问题。

我注意到要在模拟器中进行滑动拖动,我必须在选择单元格时按下并暂停一秒钟,然后才能成功向右滑动。

答案 1 :(得分:5)

您需要实施:

- (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,它从未奏效。

答案 2 :(得分:4)

我在tableView中执行以下操作:editingStyleForRowAtIndexPath:委托方法: -

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

如果没有选择indexPath,则应该返回编辑样式none。出于某种原因,无论何时执行滑动操作,都会执行此特定条件。在评论上面的代码片段时,滑动删除操作工作正常。

感谢大家的帮助。

答案 3 :(得分:4)

如果所有其他建议都无法帮助您尝试检查代码中是否有平移手势识别器。如果你在某些底层视图中有这样的东西,它将无法工作。

答案 4 :(得分:1)

使其发挥作用的关键是实施:

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

请记住将其放在“ UITableViewDataSource ”中,而不是“ UITableViewDelegate

答案 5 :(得分:0)

您是否实施了tableView:editingStyleForRowAtIndexPath:方法并让它返回UITableViewCellEditingStyleDelete

答案 6 :(得分:-2)

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