Eureka中含有MultivaluedSection类,用来实现Section的编辑功能,这里编辑是指:对Row的删除,排序和插入.
但是本猫发现Eureka在CocoaPods和GitHub中同样的4.2.0版本,其删除行为却不太相同,这可能对新手有所困惑,所以这里做一些解释,对自己和别人都有帮助.
这里所谓的删除行为不同是指:
- CocoaPods 4.2.0:启用编辑模式后,点击Row头部的圆形删除按钮无反应
- GitHub Demo 4.2.0:可以正常删除Row
为了测试,将Demo单独拎出来,然后重新和CocoaPods中的Eureka 4.2.0绑定,结果发现这时也无法触发删除功能.
所以应该是Eureka两个源中的实现有出入.
为了能够在CocoaPods的Eureka中实现删除功能,我们必须手动为每个Row创建删除动作:
for tag in nameList { section <<< TextRow { $0.placeholder = "Tag Name" $0.value = tag let deleteAction = SwipeAction(style: .destructive, title: "DEL"){action,row,completion in //Custom delete code... completion?(true) } $0.trailingSwipe.actions = [deleteAction] } }
注意completion闭包会帮你处理界面上的删除(实参为true时),所以你只需处理定制的删除代码.
而对于GitHub中的4.2.0来说,你可以不用写任何删除动作就可以完成界面上的删除动作.不过如果我还要完成一些定制的删除代码呢?
这时我们可以通过重载以下方法来完成:
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { super.tableView(tableView, commit: editingStyle, forRowAt: indexPath) if editingStyle == .delete{ //Custom delete code... } }
至于Eureka两个源为什么对于删除行为有所不同,时间原因没有细究,感兴趣的童鞋可以仔细深入研究.
另外GitHub里Eureka 4.3.0已经放出,支持iOS 12和Swift 4.2,大家可以下载测试.
感谢观赏,国庆快乐 ?