我创建了一个基于导航的应用程序模板的iOS应用程序,该应用程序由Core Data框架支持。
单击“编辑”按钮时,我希望行可以重新排序并且可以删除。
构建单元格时,我添加了这一行:
cell.showsReorderControl = YES;
tableView:canMoveRowAtIndexPath:
方法返回YES。
但是重新排序控件没有显示在行中,我错过了什么吗?
答案 0 :(得分:29)
来自UITableViewCell showsReorderControl docs:
要显示重新排序控件,您不仅必须设置此项 属性,但实现UITableViewDataSource方法 的tableView:moveRowAtIndexPath:toIndexPath :.另外,如果是数据 source实现tableView:canMoveRowAtIndexPath:返回NO,即 重新排序控件不会出现在指定的行中。
答案 1 :(得分:11)
UITableView也必须处于编辑模式,默认情况下它不在。通常您使用按钮或其他控件在编辑模式之间切换。要将表视图置于编辑模式(我们假设您有一个UITableViewController并且您的tableView属性已正确设置,如果没有,请根据您的环境进行调整):
// This line somewhere inside the UITableViewController will
// animate in the various editing controls and make sure they
// show up on your table.
[[self tableView] setEditing:YES animated:YES];
答案 2 :(得分:1)
试试这个。 。 。你必须实现这两种方法才能在编辑模式下获得重新排序控件
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
}