swift - SwiftUI - 列表中的自定义滑动操作
问题描述
如何在 SwiftUI 中使用自定义滑动操作?
我尝试使用 UIKit 框架让这些在 SwiftUI 中工作。但这对我不起作用。
import SwiftUI
import UIKit
init() {
override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let important = importantAction(at: indexPath)
return UISwipeActionsConfiguration(actions: [important])
}
func importantAction(at indexPath: IndexPath) -> UIContextualAction {
let action = UIContextualAction(style: .normal, title: "Important") { (action, view, completion) in
print("HI")
}
action.backgroundColor = UIColor(hue: 0.0861, saturation: 0.76, brightness: 0.94, alpha: 1.0) /* #f19938 */
action.image = UIImage(named: "pencil")
return action
}
}
struct TestView: View {
NavigationView {
List {
ForEach(appointmentsViewModel.appointments.identified(by: \.id)) { appointment in Row_Appointments(appointment: appointment)
}.onDelete(perform: delete)
}
}
}
}
解决方案
如果您的部署目标是 iOS 15(或更新版本),那么您可以使用swipeActions
修饰符来自定义列表项的滑动操作。
这也适用于 watchOS 8 和 macOS 12。
这些操作系统将于 2021 年底发布。
在 SwiftUI 2021 年末版本之前,不支持List
项目的自定义滑动操作。
如果您需要针对旧版本,您可能最好实现不同的用户界面,例如添加切换按钮作为列表项的子视图,或向列表项添加上下文菜单。
推荐阅读
- azure - Azure 门户中缺少 VM
- javascript - 接收新数据时如何更新d3图表
- system-verilog - 为什么 UVM 的约束随机化不起作用?
- postgresql - for 循环在 PL/pgSQL 存储过程中如何工作?
- php - 从字符串中删除除某个正则表达式之外的所有标签
- vb.net - VB.NET-LINQ 比较两个数据表
- javascript - 当用户在 Vue.js 的搜索字段中输入一些文本时,我应该使用哪个事件来做出反应?
- python - 网页抓取 - 页面源中未显示的内容
- c++ - 我正在解决递归问题,但在上一个测试用例中出现 Tle 错误,如何优化我的代码?
- python - for循环只在Python中生成一张excel表?