使用表单 swift UI 时,不会调用文件导入器/文件移动器方法
File importer/ File Mover methods are not getting invoked when using Form swift UI
即使 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
}
您不应该像以前那样在“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")
}
}
}
即使 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
}
您不应该像以前那样在“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")
}
}
}