摘要:在编辑模式下,我使用自定义编辑控件删除表格视图中的行,而不是默认的红色减号和删除确认按钮。勾选一行或多行,然后点击工具栏中的删除按钮。它类似于在邮件应用程序中看到的行为。请参阅下面的屏幕截图。
问题:调用生成的动画deleteRowsAtIndexPaths:withRowAnimation:
不规则。例如,当我使用底行动画(即UITableViewRowAnimationBottom
)删除屏幕截图中勾选的行(主题 #7)时,会发生以下情况:
- 主题 #8 在主题 #7 的下方和后面滑动
- 主题 #8 短暂隐藏在主题 #7 后面
- 主题 #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:
之间进行调用。这不能解决问题。 beginUpdates
endUpdates
关于下一步该做什么的任何建议,或者关于我为什么看到这些不规则动画的最佳猜测?
更新(iOS 7.1):
针对 iOS 7.1 后问题仍然存在。将继续依赖淡入淡出动画。