showsReorderControl有什么意义?

时间:2012-12-01 13:39:44

标签: ios cocoa-touch uitableview

我有一个UITableView实例并已实施:

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

之后,我可以通过重新排序控件看到我的所有细胞。

Apple的标题说:

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

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

更新 我在创建单元格后立即检查了tableView:cellForRowAtIndexPath:中的属性值:

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

2 个答案:

答案 0 :(得分:10)

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

事实上,还有第三种方式 - 让我们永远不要抱怨我们没有选择权! ;)来自tableView:canMoveRowAtIndexPath:的文档:

  

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

答案 1 :(得分:1)

通过阅读当前的Apple文档,似乎showsReorderControl完全没用。

UITableViewCell

  

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

UITableViewDataSource

  

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

从这份文件中我得出结论:

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

2-如果您希望某个单元格显示该控件,则必须从tableView:canMoveRowAtIndexPath:

返回NO

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