滑动不显示删除按钮

swipe not showing delete button

真奇怪。 :(

我正在尝试在表格视图中实现滑动删除。因为下面是我所拥有的。

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

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"commitEditingStyle===%@", editingStyle);
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        //add code here for when you hit delete
        NSLog(@"now delete this cell");
    }
}

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

当我滑动时仍然滑动完成,但我看不到 删除 按钮。

知道发生了什么吗?


编辑 1

现在更奇怪了。

当我在 viewDidLoad 中说 mainTableView.editing = YES; 时,我有以下内容。

为什么左侧出现删除选项?

还有编辑选项,它看起来仍然和第一张图片一样。


编辑 2

// table view delegates
- (int)numberOfSectionsInTableView:(UITableView *) tableView {
    return 1;
}

- (int) tableView:(UITableView *) tableView numberOfRowsInSection:(NSInteger)section {
    return actualProductsArray.count;
}

-(UITableViewCell *) tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"];
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MainCell"];

    // created label and added into cell...

    cell.backgroundColor = [UIColor clearColor];
    cell.contentView.backgroundColor = [UIColor clearColor];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;


    return cell;

}

你必须在 ViewDidload

中尝试 Tableview.editing=YES

我只在我的代码中使用下面的行来滑动删除它对我来说非常好。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        // Delete the row from the data source
        //[self.tblinboxmsg deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }
}

希望对你也有帮助...

我认为您是直接在单元格上添加标签而不是 cell.contentView。

如果您在此处提供代码

// 创建标签并添加到单元格中...

我们可以为您提供更多帮助。

tableView.editing = true 

具有与图像编辑 1 相同的行为。(按钮在左侧) 但是按钮在内容上,不应该。因为你直接在单元格上添加标签

请在 contentView 中添加标签,然后重试

虽然这不是真正的答案,但下面是错误的。

在定义 tableview 的大小时,我将其宽度定义为 1080 而不是 320,因此我无法看到删除按钮,因为它位于屏幕前面。

我知道这个问题已经解决一年多了,但对于一些可能遇到这个问题的人来说,这可能只是一个限制 issue.That 我就是这样解决我的问题的。

不敢相信我已经尝试解决这个问题好几天了,真的!,因为我认为它在我的代码实现中的某个地方,因为我从 UITableViewController 转换到 UIViewController 上的 UITableView。我只是从原始的 UITableViewController 复制了 UITableViewCell 并且代码从原始的 UITableViewController 实现中运行良好。

@Fahim Parkar 第一个屏幕截图与我的场景几乎相同。滑动不显示删除。我认为这意味着 canEditRowAtIndexPath 已经实施。我相信他的回答是在代码中设置的,但它让我尝试检查我的约束并最终修复它

我有同样的问题,它与 table 的宽度或没有 canEditRowAtIndexPath 无关。我注意到当我向左滑动时,右侧导航栏按钮(编辑)会闪烁。我在代码中发现的错误是我在 setEditing 方法中调用了 tableView.reloadData()。

override func setEditing(editing: Bool, animated: Bool) {
     super.setEditing(editing, animated: animated)
    tableView.reloadData()
}

当我删除 tableView.reloadData() 行时,删除按钮按预期出现。我执行 reloadData 的原因是因为在编辑模式下,我在 table 的底部添加了一个 Insert 行,其中包含一个 editingStyleForRowAtIndexPath = .Insert