我有一个UITableview,我放在一个JASidePanel控制器(https://github.com/gotosleep/JASidePanels)中我已经在我的init方法中设置了委托和数据源,我已经实现了canEditRowAtIndexPath方法,当我滑动时它们被调用一个tableview单元格,但没有任何视觉效果。我已经查看了其他问题并已实现了所有建议,但无法显示删除按钮。有谁知道会导致这种行为的原因是什么?
答案 0 :(得分:7)
您必须实施tableView:editingStyleForRowAtIndexPath:
委托方法和tableView:commitEditingStyle:forRowAtIndexPath:
数据源方法。如果没有这些,删除将不会出现在单元格中。
我假设您从YES
数据源方法返回tableView:canEditRowAtIndexPath:
(至少对于相应的行)。
答案 1 :(得分:1)
您是否尝试过此类自己的删除单元格的方法。?
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (UITableViewCellEditingStyleDelete) {
int k = [[tempArray objectAtIndex:indexPath.row] intValue];
//Remove object from index 'k'.
}
}
它可能对你有帮助。
感谢。
答案 2 :(得分:0)
在滑动TableViewCell时执行UITableView的删除操作。我们必须实现以下三种方法: -
此方法将在滑动TableViewCell时显示删除按钮。
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView
editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
NSUInteger row = [indexPath row];
NSUInteger count = [posts count];
if (row < count) {
return UITableViewCellEditingStyleDelete;
} else {
return UITableViewCellEditingStyleNone;
}
}
当用户在轻扫TableViewCell时删除一行时会调用此方法,并且在点击删除按钮时将删除刷过的行。
- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath {
NSUInteger row = [indexPath row];
NSUInteger count = [posts count];
if (row < count) {
[posts removeObjectAtIndex:row];
}
}
最后调用此方法以在删除行后更新表视图。
- (void)tableView:(UITableView *)tableView
didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath {
[self updateViewTitle];
[tableView reloadData];
}