在ios基础教程已经出现了这个经典的例子了!我也不费话了发代码!
if (cell == nil)
{
cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:CellIdentifier];
cell.showsReorderControl =YES; //我们添加一个重新排序控件
}
在导航栏上加个 UIBarButtonItem;
UIBarButtonItem *moveButton = [[UIBarButtonItemalloc]
initWithTitle:@"移动"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(toggleMove)];
self.navigationItem.rightBarButtonItem = moveButton;
事件响应
-(void)toggleMove
{
[self.tableviewsetEditing:!self.tableview.editinganimated:YES]; //初始话时默认不可编辑 点击事件的时候取反 为真!可编辑
if (self.tableview.editing)
{
[self.navigationItem.rightBarButtonItemsetTitle:@"完成"];
}else
{
[self.navigationItem.rightBarButtonItemsetTitle:@"移动"];
}
}
- (BOOL)tableView:(UITableView *)tableView
canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES; //可以移动
}
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
NSUInteger fromRow = [fromIndexPath row]; //要移动的那个cell integer
NSUInteger toRow = [toIndexPath row]; //要移动位置的那个clell integer
//arrayValue 添加数据的那个可变数组
id object = [arrayValueobjectAtIndex:fromRow]; // 获取数据
[arrayValueremoveObjectAtIndex:fromRow]; //在当前位置删除
[arrayValue insertObject:objectatIndex:toRow]; //插入的位置
}
//typedef NS_ENUM(NSInteger, UITableViewCellEditingStyle) {
// UITableViewCellEditingStyleNone,
// UITableViewCellEditingStyleDelete,
// UITableViewCellEditingStyleInsert
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
returnUITableViewCellEditingStyleNone; // 这样左边不会出现删除操作时出现的红色按钮
}