3

我创建了一个 UITableViewController。在其中,我创建了一个自定义视图,该视图从 viewForHeaderInSection 为标题返回。如果我进入编辑模式并重新排序单元格,则重新排序的单元格在滚动期间浮动在自定义标题视图上方。这将一直持续到使用 [tableview reload] 重新加载 tableview。就好像单元格在从重新排序中删除后被移动到视图堆栈的顶部。

我已经解决了 moveRowAtIndexPath 方法末尾的 [tableView reload] 问题,但我想知道这是否是预期的行为。我无法在文档或谷歌搜索中找到任何关于它的信息。

4

2 回答 2

3

我认为这是 UITableView 中的一个错误。如果您在 moveRowAtIndexPath 方法期间检查表的视图层次结构,您可以看到有问题的单元格靠近层次结构的顶部 - 这是为了在您拖动单元格时支持它的外观。

您也不能在此方法中简单地将视图移动到层次结构的后面,因为它上面有一个动画,似乎覆盖了它。

我不习惯从数据更新方法中重新加载行,所以我的解决方案是包含以下代码:

UITableViewCell *movedCell = [tableView cellForRowAtIndexPath:fromIndexPath];
double delayInSeconds = 0.4;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    [tableView sendSubviewToBack:movedCell];
});

0.4 秒的延迟是为了让单元格上的动画有时间完成。

雷达: http ://openradar.appspot.com/radar?id=2681402

于 2013-02-07T12:27:01.700 回答
0

这是标题视图上的自动调整大小标志。在 xib 中删除它们。

于 2013-12-13T16:18:03.100 回答