我可以用table来拖动tableview中的部分吗?
我使用的内和跨段拖放行我可以用table来拖动tableview中的部分吗?
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath
toIndexPath:(NSIndexPath *)destinationIndexPath{
}
方法。我是否也可以用节来执行拖动操作?
它可能在概念上(以及在技术上)更简单地将级别退回到表视图,其中每行对应于要重新排序的表的部分。也许你可以使用“重新排序部分”按钮来调用它,显示部分表视图,重新排序,然后在细节表视图上强加重新排序。 我认为如果您尝试在单个表格内完成所有操作,那么您将会挫败自己和用户。我的2美分。 -Mike
老问题,我知道,但我只是实现了一些自己做的事情,所以我想分享答案,以防止其他人偶然发现这一点。
我的基本方法是在每个部分的顶部添加一行代表部分。我还在每节的末尾添加了编辑样式为UITableViewCellEditingStyleInsert
的“添加新节”行,以允许直接在视图内创建新节。所以,对于每一个部分的行是这样的:
- 行0 =第行(在视觉上通过设置不同的 背景颜色分辨)
- 排数1至x =正常数据行
- 排x + 1 = “新增加一节”
(我有几个简单的方法,以“编辑模式indexPath”和“真实数据indexPath”之间的转换。)
对于移动部分,在p在UITableViewDelegate Protocol
方法tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath:
中检查删除的移动以确保该部分行移动得“足够远”(在另一部分行的上方或下方)。返回的indexPath被剪切到刚好在最接近的部分行的上方或下方(取决于向上还是向下移动),以向用户指示它将被移动的位置。
在tableView:moveRowAtIndexPath:toIndexPath:
段更改在数据源中,然后reloadData
消息发送到tableView以显示更改。使用reloadData
而不是moveSection:toSection:
,因为对于后者,由于行移动而导致数据源和显示不同步,并且会导致异常。
你有这样的特殊需求吗? – Ravin 2011-04-14 12:57:13
是的,我愿意..这会让我的应用用户的生活变得更轻松.. – neha 2011-04-14 14:22:52