我正为这个问题碰头,谷歌却什么也没找到。
我最终解决了这个问题,并想把它写在这里是为了下一个人。
你有一个UITableView
有多个部分。每个部分都是同质的,但整个表是异构的。因此,您可能希望允许对节内的行重新排序,但不允许across部分。也许您甚至只希望其中一个部分可以重新排序(这就是我的情况)。
如果你像我一样正在寻找UITableViewDataSourceDelegate
当它允许您在部分之间移动行时,您不会找到通知。当它开始移动一行时您会得到一个(这很好),当它已经移动一行时您会得到一个,并且您有机会与内部内容同步。没有帮助。
那么如何防止各部分之间的重新排序呢?
我将把我所做的作为一个单独的答案发布,让其他人可以发布更好的答案!
此实现将防止像 Phil 的答案一样在原始部分之外重新排序,但它也会将记录捕捉到该部分的第一行或最后一行,具体取决于拖动的位置,而不是开始的位置。
- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath
{
if (sourceIndexPath.section != proposedDestinationIndexPath.section) {
NSInteger row = 0;
if (sourceIndexPath.section < proposedDestinationIndexPath.section) {
row = [tableView numberOfRowsInSection:sourceIndexPath.section] - 1;
}
return [NSIndexPath indexPathForRow:row inSection:sourceIndexPath.section];
}
return proposedDestinationIndexPath;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)