1

我希望我的视图模型有状态绑定不在主视图中。

在下面的代码中,我在主视图中将视图模型的 @GestureState 变量绑定到 DragGesture。但问题是,没有任何编译错误,它根本不会更新我的 @GestureState 变量。如果我在主视图中定义 @GestureState 变量,它就可以工作。任何想法?

class ViewModel {
    @GestureState var dragOffset = CGSize.zero
}

struct ExampleView: View {
    var viewModel = ViewModel()

    var body: some View {
        Image(systemName: "star.circle.fill")
            .font(.system(size: 100))
            .offset(x: viewModel.dragOffset.width, y: viewModel.dragOffset.height)
            .animation(.easeInOut)
            .foregroundColor(.green)
            .gesture(
                DragGesture()
                    .updating(viewModel.$dragOffset, body: { (value, state, transaction) in
                        print(state)
                        state = value.translation
                        print(state)
                    })
            )
    }
}
4

0 回答 0