概要:
在编辑模式下,我使用自定义编辑控件删除表视图中的行,而不是默认的红色减号和删除确认按钮.勾选一行或多行,然后点击工具栏中的删除按钮.它类似于在邮件应用程序中看到的行为.请参阅下面的截图.
在编辑模式下,我使用自定义编辑控件删除表视图中的行,而不是默认的红色减号和删除确认按钮.勾选一行或多行,然后点击工具栏中的删除按钮.它类似于在邮件应用程序中看到的行为.请参阅下面的截图.
问题:
通过调用deleteRowsAtIndexPaths:withRowAnimation产生的动画是不规则的.例如,下面是当我使用底部行动画(即UITableViewRowAnimationBottom)删除屏幕截图中勾选的行(主题#7)时会发生什么:
主题#8在主题#7下方和后方滑动
主题#8被短暂隐藏在主题#7之后
主题#8替代主题#7
这是在模拟器和设备上发生的.当删除上述Subject#7时,自动动画类型(即UITableViewRowAnimationAutomatic)产生相同的不规则行为.
顶级动画类型在模拟器中按预期方式工作,但对设备产生不一致的刺激动画.
褪色类型动画是唯一可以在模拟器和设备上按预期工作的动画.
细节:
我的目标是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的注释,这些不规则动画仍然存在.
我还从表格单元格中删除了自定义的可编辑编辑控件,然后硬编码了action方法中特定行的删除.不规则动画持续存在.
正如其他人所建议的,我尝试调用deleteRowsAtIndexPaths:withRowAnimation:在调用beginUpdates和endUpdates之间.这不能解决问题.
关于下一步做什么的建议,或者最好的猜测为什么我看到这些不规则的动画?
更新(iOS 7.1):
问题依然存在于iOS 7.1之后.将继续依靠淡化动画.
解决方法
尝试打电话 [self.listOfItems removeObjectsAtIndexes:self.indexSetOfTickedRows]; 在功能的结尾,而不是在开始.