我想实现一个功能,使用Swift 3.0刷掉整个表格单元格。就像你可以在iOS 10的邮件应用程序中滑动删除一样。
重要的是要注意,我并不是指滑动显示删除按钮,然后处理删除。我的意思是用户可以在屏幕上从右向左滑动以删除。 (另请注意,tableView是静态的,而不是动态的)
我是否必须为此实现UISwipleGestureRecognizer?
答案 0 :(得分:0)
您可以像对待包含动态内容的表一样实施UITableViewDataSource
方法tableView(_:commit:forRowAt:)
和tableView(_:canEditRowAt:)
。
但是,在包含静态内容的表中,您无法插入或删除行。由于表是静态的,所以行应该保留。您可以做的是更新刷过的行以反映已删除的状态。
例如:在我的应用中,我使用内置的滑动手势来重置设置。用户滑动行(静态内容),点击“删除”按钮,应用程序相应地设置该单元格中的标签和图像。该行不会被删除,只是更新,就像您通常使用静态单元格一样(分配插座并像其他静态内容一样访问它们)。
修改强>
另请查看iOS 11中performsFirstActionWithFullSwipe
类的UISwipeActionsConfiguration
属性。将其设置为true
以允许完整的滑动手势,无需安装自己的识别器。
你确实提到过iOS 10 Mail;我不知道Apple是否或如何在iOS 10中使用它,因为此属性是iOS 11功能。 iOS Mail也很可能有一个包含动态内容的表格。
答案 1 :(得分:-1)
您只需添加这些功能并根据需要进行更改。
override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let example1 = UITableViewRowAction(style: .normal, title: "example1") { (action: UITableViewRowAction!, indexPath: IndexPath!) -> Void in
// run your desired action
}
example1.backgroundColor = .white
let example2 = UITableViewRowAction(style: .normal, title: "example2") { (action: UITableViewRowAction!, indexPath: IndexPath!) -> Void in
// run your desired action
}
example2.backgroundColor = .green
let example3 = UITableViewRowAction(style: .normal, title: "example3") { (action: UITableViewRowAction!, indexPath: IndexPath!) -> Void in
// run your desired action
}
example3.backgroundColor = .orange
return [example1, example2, example3]
}
和这个
{{1}}