我有一个包含10个部分的tableView,每个部分有3行。
是否可以使用tableViewDelegate方法
重新删除该部分-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath
toIndexPath:(NSIndexPath *)toIndexPath {
}
现在,如果我从一个部分拖动一行并将其放在另一个部分上,则将其添加到该部分。页脚视图也未被选中进行重新排序,它仍保留在原始部分中。
有什么想法吗?
由于
答案 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)
}