如何在SwiftUI中使用自定义Swipe Actions?
我尝试使用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)
}
}
}
}
字符串
7条答案
按热度按时间ztyzrc3y1#
现在,在iOS 15,Swift 5.5中,我们可以添加这样的Swipe操作
字符串
ego6inou2#
如果您的部署目标是iOS 15(或更高版本),则可以使用
swipeActions
modifier自定义列表项的滑动操作。这也适用于watchOS 8和macOS 12。
这些操作系统将于2021年底发布。
在2021年后期版本的SwiftUI之前,不支持
List
项目的自定义滑动操作。如果你需要一个旧版本,你可能会更好地实现一个不同的用户界面,比如添加一个切换按钮作为列表项的子视图,或者adding a context menu到列表项。
g6ll5ycj3#
iOS 15+
在iOS 15中,我们终于可以使用原生Swipe Actions了:
字符串
它们可以像
onMove
或onDelete
一样附加到ForEach
容器:型
dkqlctbz4#
基于Michał Ziobro answer使用Introspect简化表视图委托设置。
请注意,这将覆盖表视图委托,并可能BREAK一些现有的表视图行为。虽然诸如header hight之类的事情可以通过自己添加方法来自定义委托来修复,但其他可能无法修复。
字符串
hjzp0vay5#
它是能够这样做的方式:
字符串
然后需要添加这个swipeActions()修饰符
型
让
TableViewConfigurator
在List
后面搜索表视图,型
gojuced76#
很高兴看到iOS 15将期待已久的
.swipeActions
视图修改器引入SwiftUI中的List
,并提供易于使用的API。字符串
操作按列出的顺序显示,从起始边开始向内。
上面的例子产生:
的数据
请注意,如果提供了
ForEach
上可用的onDelete
处理程序,则swipeActions
将覆盖该处理程序Read more in Apple's developer docs
pdkcd3nj7#
我想要的是相同的,现在有了以下实现。
SwipeController检查何时执行滑动动作并执行SwipeAction,现在你可以在executeAction函数中的打印行下添加你的滑动动作。但是它最好从这里创建一个抽象类。
然后在SwipeLeftRightContainer结构体中,我们在DragGesture中拥有大部分逻辑。它所做的是当你拖动时,它会改变偏移量,然后调用SwipeController来查看是否达到了向左或向右滑动的阈值。然后当你完成拖动时,它会进入DragGesture的onEnded回调。在这里,我们将重置偏移量,让SwipeController决定执行一个动作。
请记住,视图中的许多变量对于iPhone X来说都是静态的,因此您应该将它们更改为最适合的变量。
这也是为了创建一个左右滑动的动作,当然你可以根据自己的使用来调整它。
字符串