7

我有一个UITableView实例并实现:

tableView:canEditRowAtIndexPath:
tableView:editingStyleForRowAtIndexPath:
tableView:shouldIndentWhileEditingRowAtIndexPath:
tableView:canMoveRowAtIndexPath:
tableView:moveRowAtIndexPath:toIndexPath:

之后,我可以看到所有带有重新排序控件的单元格。

苹果的标题说:

@property(nonatomic) BOOL showsReorderControl; // default is NO

如果默认值是NO为什么我会看到重新排序控件?

更新:tableView:cellForRowAtIndexPath:创建单元格后, 我还检查了属性的值:

(lldb) p [c showsReorderControl]
(BOOL) $1 = NO
4

2 回答 2

10

当您从 中返回 YES 时tableView:canMoveRowAtIndexPath:,它的作用与将 设置showsReorderControl为 YES 相同。这些只是启用重新排序控制的两种不同方法。

事实上,还有第三种方法——我们永远不要抱怨我们没有选择!;) 来自以下文档tableView:canMoveRowAtIndexPath:

此方法允许委托指定不显示指定行的重新排序控件。默认情况下,如果数据源实现 tableView:moveRowAtIndexPath:toIndexPath: 方法,则会显示重新排序控件。

于 2012-12-01T15:05:34.273 回答
1

通过阅读当前的 Apple 文档,它似乎showsReorderControl根本没有用。

UITableViewCell

要显示重新排序控件,您不仅必须设置此属性,还必须实现 UITableViewDataSource 方法 tableView:moveRowAtIndexPath:toIndexPath:。

UITableView 数据源

默认情况下,如果数据源实现 tableView:moveRowAtIndexPath:toIndexPath: 方法,则会显示重新排序控件。

从这个文档中,我得出结论:

1-显示重新排序控件的唯一方法是实现tableView:moveRowAtIndexPath:toIndexPath:,它显示所有单元格中的控件。

2-如果您希望单元格显示控件,则必须返回 NO fromtableView:canMoveRowAtIndexPath:

3-showsReorderControl无法控制是否显示重新排序控制。

于 2015-06-19T17:57:40.677 回答