重新订购后,滚动时,UitableView中的单元格在自定义方面



我已经创建了一个UITATEVIEWCONTROLLER。在其中,我创建了一个自定义视图,该视图将从ViewForHeaderInsection中返回为标头返回。如果我进入编辑模式并重新排序单元格,则在滚动过程中,重新排序的单元格在自定义标头视图上方上方。这将持续到TableView使用[TableView Reload]重新加载。它好像在从重新订购中掉落后的单元格被移至视图堆栈的顶部一样。

我在MoverOwatIndExpath方法的末尾使用[TableView Reload]解决了问题,但是我想知道这是否是预期的行为。我在文档或谷歌搜索中都找不到任何有关它的信息。

我认为这是UITAITEVIEW中的错误。如果您在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秒的延迟是在单元格时间内完成动画。

radar'd:http://openradar.appspot.com/radar?id=2681402

它是标题视图上的自动化标志。在XIB中删除它们。

最新更新