真的很奇怪。 :(
我正在尝试在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;
}
当我滑动时,滑动已完成,但我无法看到删除按钮。
知道发生了什么事吗?
现在更奇怪了。
当我在mainTableView.editing = YES;
中说viewDidLoad
时,我在下面。
为什么删除选项出现在左侧?
同样使用编辑选项,它仍然与第一张图像相同。
// 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;
}
答案 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}}已经实施。我认为他的答案是在代码中设置的,但它让我试着检查我的约束并最终修复它