如果我在编辑模式下有一个UITableView,打开重新排序,似乎我无法将一些(但不是全部)单元格移动到某些(但不是全部)空白部分。例如,如果我有这个布局:
Section 1
apple
banana
Section 2
doberman
Section 3
Section 4
然后我可以将'杜宾犬'移到第1部分的任何一个插槽中(除了'香蕉'之外),但我根本无法将它移到第3或第4部分。
另一方面,我可以移动'apple'& '香蕉'进入第2节(除了'杜宾犬'之外),我可以将其移至第3节,但不能进入第4节。
是什么给出的?这似乎是越野行为。人们如何解决这个问题?苹果是否意识到这个错误?
答案 0 :(得分:2)
我也是通过从显而易见的许多节表模型转移到只有一个节的模型,并将“节标题”建模为样式表视图单元格来解决它。
愚蠢的苹果......
答案 1 :(得分:2)
我使用了另一个hack:在编辑模式下创建一个带有空单元格的虚拟最后一个部分(不可见的backgroundView)。有了这个,我可以保持部分/行组织,并且重新排序工作非常好,即使是“最后”部分。
另一种方法是,使用与单元格至少相同高度的节页脚。在这种情况下,单元格可以越过最后一个部分的最后一个单元格。
答案 2 :(得分:2)
在此博客中告诉您最简单的方法:
http://davemeehan.com/technology/moving-uitableviewcell-between-sections-in-grouped-uitableview
无论该部分是否为空。只需返回titleForFooterInSection中的一些文本:您就能解决问题。它甚至可以通过返回@“”来实现。
答案 3 :(得分:0)
Sirdek是对的。只需将以下代码复制到UITableViewDelegate / UITableViewDataSource中即可。
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
NSInteger lastSection = [self numberOfSectionsInTableView:tableView] - 1;
NSInteger lastRow = [self tableView:tableView numberOfRowsInSection:lastSection] - 1;
CGFloat height = [self tableView:tableView heightForRowAtIndexPath:[NSIndexPath indexPathForRow:lastRow inSection:lastSection]];
return (section == lastSection ? [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, height)] autorelease] : nil);
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
NSInteger lastSection = [self numberOfSectionsInTableView:tableView] - 1;
NSInteger lastRow = [self tableView:tableView numberOfRowsInSection:lastSection] - 1;
CGFloat height = [self tableView:tableView heightForRowAtIndexPath:[NSIndexPath indexPathForRow:lastRow inSection:lastSection]];
return (section == lastSection ? height : 0);
}