11

摘要:在编辑模式下,我使用自定义编辑控件删除表格视图中的行,而不是默认的红色减号和删除确认按钮。勾选一行或多行,然后点击工具栏中的删除按钮。它类似于在邮件应用程序中看到的行为。请参阅下面的屏幕截图。

在此处输入图像描述

问题:调用生成的动画deleteRowsAtIndexPaths:withRowAnimation:不规则。例如,当我使用底行动画(即UITableViewRowAnimationBottom)删除屏幕截图中勾选的行(主题 #7)时,会发生以下情况:

  1. 主题 #8 在主题 #7 的下方和后面滑动
  2. 主题 #8 短暂隐藏在主题 #7 后面
  3. 主题 #8 不和谐地替换主题 #7

这发生在模拟器和设备上。自动动画类型(即UITableViewRowAnimationAutomatic)在删除上面的主题 #7 时会产生相同的不规则行为。

Top 动画类型在模拟器中按预期工作,但在设备上产生不一致、不和谐的动画。

Fade 类型的动画是唯一在模拟器和设备上都能按预期工作的动画。

详情

我的目标是 iOS 7,并使用故事板、纯自动布局和核心数据。

这是我删除行的操作方法:

- (void)deleteButtonTapped:(UIBarButton *)sender
{
    // update table view's data
    [self.listOfItems removeObjectsAtIndexes:self.indexSetOfTickedRows];

    // create index paths for ticked rows
    NSMutableArray *indexPaths = [[NSMutableArray alloc] init];

    [self.indexSetOfTickedRows enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
        [indexPaths addObject:[NSIndexPath indexPathForRow:idx inSection:0]];
    }];

    [self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationBottom];

    // update Core Data and UI...
}

我试过的:

表格单元子类覆盖layoutSubviews. 但是,即使我注释掉,不规则动画仍然存在layoutSubviews

我还从表格单元格中删除了自定义可勾选编辑控件,然后在操作方法中硬编码删除特定行。不规则的动画持续存在。

正如其他人所建议的那样,我尝试在调用和deleteRowsAtIndexPaths:withRowAnimation:之间进行调用。这不能解决问题。 beginUpdatesendUpdates

关于下一步该做什么的任何建议,或者关于我为什么看到这些不规则动画的最佳猜测?

更新(iOS 7.1):

针对 iOS 7.1 后问题仍然存在。将继续依赖淡入淡出动画。

4

3 回答 3

1

尝试 [self.listOfItems removeObjectsAtIndexes:self.indexSetOfTickedRows]; 在函数末尾而不是开头调用。

于 2015-02-23T07:09:58.497 回答
0

也许按照这里的建议设置单元格上的 alpha。不过不确定。 在ios7中删除TableView的最后一行时出现动画问题

于 2014-03-13T11:23:42.210 回答
0

尝试添加[tableView beginUpdates];[tableView endUpdates];

于 2014-01-30T11:50:00.760 回答