2011-01-22 57 views
14

我创建了一个基于导航的应用程序模板的iOS应用程序,该应用程序由Core Data框架支持。重新排序控制不显示在表格视图

当点击编辑按钮时,我希望行是可重新排序和可删除的。

当构造单元,I加入这一行:

cell.showsReorderControl = YES; 

tableView:canMoveRowAtIndexPath:和方法返回YES。

但重排序控制不显示在行中,我错过了什么?

回答

28

UITableViewCell showsReorderControl docs

对于要重新排序控件出现,您不仅必须设置此 属性,还需要实现UITableViewDataSource方法 tableView:moveRowAtIndexPath:toIndexPath :.另外,如果数据源实现了tableView:canMoveRowAtIndexPath:返回NO,那么 重新排序控件不会出现在该指定行中。

+0

我不知道tableView:moveRowAtIndexPath:toIndexPath:必须被执行才能显示移动附件。这解决了我的问题!谢谢! – 2011-06-14 03:44:03

9

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]; 
+0

这是一个假想的屏幕截图,当按下Edit按钮(位于导航栏左侧)时会发生什么?单击编辑时是否可以合并删除和排序操作? http://dl.dropbox.com/u/3630641/4-%20Todolist%20Main%20-%20Edit.jpg – Chiron 2011-01-22 18:11:50

1

试试这个。 。 。您必须实现这两种方法才能在编辑模式下获得重新排序控制

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return YES; 
} 

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath 
{ 

}