在UITableView中重新排序单元格

时间:2011-02-09 12:52:52

标签: objective-c uitableview

我有一个包含10个部分的tableView,每个部分有3行。

是否可以使用tableViewDelegate方法

重新删除该部分
-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath 
  toIndexPath:(NSIndexPath *)toIndexPath {
}

现在,如果我从一个部分拖动一行并将其放在另一个部分上,则将其添加到该部分。页脚视图也未被选中进行重新排序,它仍保留在原始部分中。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:4)

查看本教程:Add, Delete & Reorder UITableView Rows。本教程结束时有一个工作项目。

答案 1 :(得分:4)

由于这是Google最初的结果之一,我想我会添加快速代码。除moveRowAtIndex中的indexPaths名称外,Objective-C几乎相同。

启用编辑模式:

如果您正在使用UITableViewController,则可以使用以下方法切换编辑模式:

func toggleEditing() {
    self.editing = !self.editing
}

如果您没有使用UITableViewController(例如,您已将表视图添加到UIViewController(或UITableViewController以外的任何View Controller),那么您可以将其切换为:

func toggleEditing() {
    self.editing = !self.editing
}

注意:tableView是UITableView的名称。

实施canMoveRowAtIndexPath

override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
    return true 
}

实施moveRowAtIndexPath

override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {
   var itemToMove = tableData[fromIndexPath.row]
   tableData.removeAtIndex(fromIndexPath.row)
   tableData.insert(itemToMove, atIndex: toIndexPath.row)
}