我读到了关于表格视图及其编辑样式但我遇到了一些问题,因为只有三种编辑风格如下:
UITableViewCellEditingStyleNone
UITableViewCellEditingStyleDelete
UITableViewCellEditingStyleInsert
我想重新排序我使用它的委托成功实现的tableview单元格。
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
return YES;
}
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
return UITableViewCellEditingStyleNone;
}
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
//handle the editing style
}
-(NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath{
//move cells
}
-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{
return YES;
}
我不想使用UITableViewCellEditingStyleDelete
,因为它在表格视图中显示了一个红色的圆形按钮。而不是这个,我想要一起刷卡到删除和重新排序功能。
有没有办法实现这个?
答案 0 :(得分:1)
这可以通过以下条件完成。只有在编辑模式下表视图不时,滑动到删除才会起作用,并且只有在编辑模式下表视图 时,表重新定位才有效。您无法在表格重新订购的同时进行滑动删除工作。
要完成这项工作,您需要以下内容:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
// Only allow deletion when the table isn't being edited
return tableView.isEditing ? UITableViewCellEditingStyleNone : UITableViewCellEditingStyleDelete;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
// handle the row deletion
}
- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath {
// Check if move is valid
return proposedDestinationIndexPath;
}
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (void)tableView:(UITableView * nonnull)tableView moveRowAtIndexPath:(NSIndexPath * nonnull)fromIndexPath toIndexPath:(NSIndexPath * nonnull)toIndexPath {
// process the moved row
}
您需要导航栏中的标准“编辑”按钮(或以其他方式切换表格的编辑模式)。执行此操作的常用方法是在表视图控制器的viewDidLoad
方法中添加以下行:
self.navigationItem.rightBarButtonItem = [self editButtonItem];