swift - 如何为单个 UITableViewCell 启用动画编辑模式?

标签 swift uitableview

UITableView 处于编辑模式。每个单元格都有一个UISwitch。委托(delegate)方法 tableView(_ tableView:canEditRowAt:) 仅对于开关打开的单元格返回 true

当开关值更改为on时,单元格应变为可编辑,当其更改为off时,单元格应变为不可编辑。

我尝试通过设置 isEditing=false 来更改单元格的编辑模式。但除非我调用 tableView.reloadData() ,否则单元格的编辑模式不会改变。但是,当我在开关值更改后立即重新加载数据时,开关动画不可见。

在单元格上调用tableView.reloadRows也会破坏切换动画。

如何启用/禁用单个 UITableViewCell 进行编辑,同时保留单元格中的切换动画?

最佳答案

假设:您有 SwitchTableViewCell 和 ViewController 委托(delegate)给您的单元格,并处理开关值的更改。在委托(delegate)方法中,假设 didChangeSwitchValue(at indexPath: IndexPath, newValue: Bool) ,您需要更新模型,然后调用以下行来更新 tableView 布局,而不破坏切换动画。

假设编辑样式用于删除,以下行修复了动画:

self.tableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.automatic)

请注意,我尝试过使用 UITableViewRowAnimation.nonetableView.reloadData() ,正如您所说,动画中断,但使用动画选项 UITableViewRowAnimation .automatic 看起来不错。如果您对其他编辑模式有任何问题,请更新您的问题。

关于swift - 如何为单个 UITableViewCell 启用动画编辑模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46913417/

相关文章:

ios - 访问 nsmutablearray xcode 中的图像

ios - 是否可以为 UITableView 中的每个部分设置不同的分隔符颜色?

在iOS 13上构建时,UITableViewCell selectedBackgroundView的颜色不可见

ios - navigationItem.set_BarButton 不起作用 - 快速

arrays - Array.filter 比循环便宜吗?

ios - 导航栏的 .isTranslucent 颜色的 RGB 等效颜色是什么?

ios - didUpdateLocations 每次当 viewWillAppear 发生重大位置变化时调用

iphone - 当按钮位于UITableViewCell上时,UIButton为什么showTouchWhenHighlighted不起作用?

ios - 如何在 UITableView 中的新 UITableView 自定义单元格上拆分以 ","分隔的文本

ios - UITableView的自定义加载动画