【问题标题】:UITableView: moving a row into an empty sectionUITableView:将一行移动到一个空白部分
【发布时间】:2010-10-13 21:14:04
【问题描述】:
我有一个 UITableView 有一些空白部分。我希望用户能够使用标准编辑模式控件将一行移入其中。到目前为止,我能做到的唯一方法是在我的“空”部分中有一个虚拟行,并尝试通过使用 tableView:heightForRowAtIndexPath: 将虚拟行的高度设为零来隐藏它。这似乎将其保留为 1 像素行。我可能可以通过制作一种特殊类型的单元格来隐藏这一点,该单元格只填充[UIColor groupTableViewBackgroundColor],但有没有更好的方法?
这都是UITableView的分组模式。
更新:看起来像将行移动到空白部分是可能没有任何技巧,但“敏感性”已经足够糟糕,你需要技巧才能使其对普通用户可用(谁赢了'没有足够的耐心慢慢将行悬停在空白部分周围,直到点击)。
【问题讨论】:
标签:
iphone
ios
uitableview
【解决方案1】:
我发现在 iOS 4.3 中,虚拟行的高度必须至少为 1 像素,才能获得允许将行移动到该部分的预期效果。
我还发现只有第一节和最后一节才需要虚拟行;中间的任何部分都没有这个问题。
而且看起来在 iOS 5.0 中,根本不需要虚拟行或特殊技巧。
【解决方案2】:
我发现如果你从 heightForRowAtIndexPath 方法中返回 -1.0 ,它将删除 1 像素线。
【解决方案3】:
在管理编辑时,您可以监控表格视图是否处于编辑模式。在cellForRowAtIndexPath 中使用该标志来决定天气或不显示“空白”行。在“常规”模式下,该行不会显示,但是当用户点击“编辑”时,应该再次调用 cellForRowAtIndexPath,这一次决定显示该行。如何做到这一点的细节取决于您的数据源以及您如何将其粘合到显示器上。如果您没有再次接到电话,您可以使用 insertRowsAtIndexPaths / deleteRowsAtIndexPaths 手动注入行和/或调用 reloadData 强制刷新。