我有一个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
答案 0 :(得分:10)
当您从tableView:canMoveRowAtIndexPath:
返回“是”时,它与将showsReorderControl
设置为“是”相同。这些只是启用重新排序控制的两种不同方法。
事实上,还有第三种方式 - 让我们永远不要抱怨我们没有选择权! ;)来自tableView:canMoveRowAtIndexPath:
的文档:
此方法允许委托指定重新排序控件 对于指定的行不显示。默认情况下,重新排序 如果数据源实现了控件,则显示控件 tableView:moveRowAtIndexPath:toIndexPath:method。
答案 1 :(得分:1)
通过阅读当前的Apple文档,似乎showsReorderControl
完全没用。
要显示重新排序控件,您不仅必须设置此属性,还必须实现UITableViewDataSource方法tableView:moveRowAtIndexPath:toIndexPath:。
默认情况下,如果数据源实现了tableView:moveRowAtIndexPath:toIndexPath:方法,则会显示重新排序控件。
从这份文件中我得出结论:
1-显示重新排序控件的唯一方法是实现tableView:moveRowAtIndexPath:toIndexPath:
,它显示所有单元格中的控件。
2-如果您希望某个单元格不显示该控件,则必须从tableView:canMoveRowAtIndexPath:
3- showsReorderControl
无法控制是否显示重新排序控制。