问题描述
|
我在使用此UITableView方法时遇到问题:
- (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation
首先,文档说:
动画:
是的,以动画方式删除节,否则为否。
但是,参数动画实际上是枚举ѭ1type,而不是BOOL
!?。
那么如何禁用动画呢?我尝试过NO
和UITableViewRowAnimationNone
。没用。删除部分始终是动画。
我知道我可以改用[tableView reloadData]
。那会解决我的问题。我只是好奇这是否是已知问题,是否可以使用此tableview方法禁用动画。
谢谢!
解决方法
关于文档中的“是/否”,而参数的类型为UITableViewRowAnimation,我想这是API的旧版本的其余部分,其中以前的参数是BOOL。无论如何,文档确实是错误的。
为此,请随时向Apple发送反馈(使用文档底部的“很好,但是…\”链接)
, 有点hack,但这摆脱了插入动画:
[UIView setAnimationsEnabled:NO];
[self.tableView insertRowsAtIndexPaths:insertedIndexPaths withRowAnimation:UITableViewRowAnimationNone];
[UIView setAnimationsEnabled:YES];
, 好吧,显然该文档确实是错误的。您传递的参数说明了如何为删除设置动画。如果您通过UITableViewRowAnimationNone
,更新将立即进行,而不会显示动画。但是,当您在要删除的部分下面有一个部分时,它将以动画方式向上移动。
您应该尝试利用动画。这样,用户可以看到发生了什么。
, 我相信您需要将deleteSections
调用嵌入到beginUpdates
块中:
[tableView beginUpdates];
[tableView deleteSections:... withRowAnimation:... ];
[tableView endUpdates];
该文档似乎还是这样说的。我还没有用ѭ11来测试。