0

即使 fileMover 中的绑定属性设置为 true。文件移动器没有被执行。下面是我使用的示例代码。任何线索都会有所帮助。提前致谢。

var body: SomeView {
    
    Form {
        Section {
            HStack {
                //some view logic
            }.fileMover(isPresented: $viewModel.shouldStartFileExport,
                        file: viewModel.targetURL) { result in
                print("result")
            }
        }
    }
}
struct ViewModel {
    @State var shouldStartFileExport = false
    @State var targetURL: URL = //some URL
}
4

1 回答 1

0

您不应该像以前那样在“struct ViewModel”中使用“@State”,它们是用于视图的。

有很多方法可以改变你的变量,在这里我展示你可以使用“ObservableObject”,或者你可以简单地在视图中使用“@State”。

    class ViewModel: ObservableObject {
        @Published var shouldStartFileExport = false
        @Published var targetURL = URL(string: "somefileurl")!
    }
    
    struct ContentView: View {
    //    @State var shouldStartFileExport = false
    //    @State var targetURL = URL(string: "somefileurl")!
    @StateObject var viewModel = ViewModel()
    
    var body: some View {
        Form {
            Section {
                HStack {
                    Button("fileMover test") { viewModel.shouldStartFileExport = true }
                }
            }
        }
        .fileMover(isPresented: $viewModel.shouldStartFileExport, file: viewModel.targetURL) { result in
            print("\n-----> result <-----\n")
        }
    }
    
}
于 2021-07-18T06:39:47.637 回答