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,大家可以下载测试.
感谢观赏,国庆快乐 ?