表视图上不显示重新排序控件

时间:2011-01-22 17:38:54

标签: iphone cocoa-touch ios uitableview core-data

我创建了一个基于导航的应用程序模板的iOS应用程序,该应用程序由Core Data框架支持。

单击“编辑”按钮时,我希望行可以重新排序并且可以删除。

构建单元格时,我添加了这一行:

cell.showsReorderControl = YES;

tableView:canMoveRowAtIndexPath:方法返回YES。

但是重新排序控件没有显示在行中,我错过了什么吗?

3 个答案:

答案 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
{

}