swiftui - 通过实时预览 (SwiftUI) 执行操作/使用手势

标签 swiftui action gesture preview

我有 CustomToggle,我想通过实时预览 对其进行测试。问题在于,通过实时预览点击切换不会执行任何操作,但在运行模拟器时效果很好。

struct CustomToggle: View {
    @Binding var isOn: Bool

    // ... displaying CustomToggle view
    // ... and toggling isON onTapGesture

}
struct CustomToggle_Previews: PreviewProvider {
    @State static var isOn = true
    static var previews: some View {
        CustomToggle(isOn: $isOn)
    }
}

最佳答案

您可以为此目的定义一个结构:

struct StatefulPreviewWrapper<Value, Content: View>: View {
    @State var value: Value
    var content: (Binding<Value>) -> Content

    var body: some View {
        content($value)
    }

    init(_ value: Value, content: @escaping (Binding<Value>) -> Content) {
        self._value = State(wrappedValue: value)
        self.content = content
    }
}

然后在预览中使用它,如下所示:


struct CustomToggle_Previews: PreviewProvider {
    static var previews: some View {
        StatefulPreviewWrapper(false) { CustomToggle(isOn: $0) }
    }
}

关于swiftui - 通过实时预览 (SwiftUI) 执行操作/使用手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60696982/

相关文章:

SwiftUI:动画更改依赖于@ObjectBinding

ios - 在SwiftUI列表中移动项目时不需要的动画

forms - 有两个SubmitButton的Grails表单

asp.net - MVC 4 Web API操作返回: Types vs HttpResponseMessage

SwiftUI:如何使用 .presentation 修饰符进行警报?出现编译器类型检查错误

java - 鼠标监听器和 Action 监听器之间的区别?

SwiftUI:多点触控手势/多个手势

ios - 如何在 swift 3 中将滑动手势添加到 AVPlayer

android - Facebook 使用什么库通过拖动来关闭图像?

swiftui - 获取 ScrollView 元素编号 SwiftUI