滑动不显示删除按钮

时间:2015-01-12 12:45:47

标签: ios objective-c uitableview swipe

真的很奇怪。 :(

我正在尝试在tableview中实现滑动删除。为此,以下是我所拥有的。

- (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;
}

当我滑动时,滑动已完成,但我无法看到删除按钮。

enter image description here

知道发生了什么事吗?


编辑1

现在更奇怪了。

当我在mainTableView.editing = YES;中说viewDidLoad时,我在下面。

enter image description here

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

同样使用编辑选项,它仍然与第一张图像相同。


编辑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;

}

6 个答案:

答案 0 :(得分:4)

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

在定义tableview的大小时,我已将其宽度定义为1080对320,因此我无法看到删除按钮,因为它远远超出了屏幕。

答案 1 :(得分:1)

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

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

当我删除tableView.reloadData()行时,删除按钮显示正常。我在做reloadData的原因是因为在编辑模式下,我在表格底部添加了一个Insertline行,其中包含editingStyleForRowAtIndexPath = .Insert

答案 2 :(得分:0)

您必须在ViewDidload中尝试Tableview.editing = YES

答案 3 :(得分:0)

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

- (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
    }
}

希望它也能帮到你......

答案 4 :(得分:0)

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

如果您在此处提供代码

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

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

tableView.editing = true 

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

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

答案 5 :(得分:0)

我知道这已经解决了一年多,但对于一些可能会遇到这个问题的人来说,这可能只是一个约束问题。这就是我解决了我的问题。

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

@Fahim Parkar的第一个截图与我的情节大致相同。滑动并不显示删除。我认为这意味着{{1}}已经实施。我认为他的答案是在代码中设置的,但它让我试着检查我的约束并最终修复它