滑动UITableViewCell的问题

时间:2011-05-13 18:03:51

标签: iphone objective-c ipad uitableview

当用户在UITableViewCell右侧滑动时,我想做一些事情,所以我使用

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

但是我试图向右滑动并且没有被调用,为什么会这样?我调用了所有的UITableView委托。

我的代码中也有这个:

 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
 {
     return YES;
 }


 // Override to support editing the table view.
 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{

}

我想要做的就是在滑动发生时添加子视图

4 个答案:

答案 0 :(得分:1)

你有tableView:commitEditingStyle:forRowAtIndexPath:method?

引用Apple:

Note: A swipe motion across a cell does not cause the display of a Delete button 
unless the table view's data source implements the 
tableView:commitEditingStyle:forRowAtIndexPath: method.

并且,在我的项目中删除该方法也会导致不会调用willBeginEditing。

答案 1 :(得分:1)

// You missed this?
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
  return YES;
}


- (UITableViewCellEditingStyle)tableView:(UITableView *)theTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
  return UITableViewCellEditingStyleDelete;
}


- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
  return @"Remove";
}


- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
  if (editingStyle == UITableViewCellEditingStyleDelete) {
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
  }
}

希望有所帮助。

答案 2 :(得分:0)

设置表格视图的属性

tableView.editing = YES;

答案 3 :(得分:0)

尝试将此方法添加到tableView委托方法中:

    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
         if (editingStyle == UITableViewCellEditingStyleDelete) {
             // Delete the row from the data source.
             [self.listTableView beginUpdates];
...

我假设你正在调用你的.h文件中包含的其他委托方法@interface line?如果使用IB,您是否右键单击了tableview并连接了delegate和dataSource?