我在 SwiftUI 视图中使用“.fileImporter”修饰符;它工作得很好,除了一个非常烦人的问题,我无法在任何地方找到解决方案。
绑定到状态变量的“选择器”showFileImporter
根据文档的要求(最初设置为 false),并配置为允许多重选择,通过在用户点击按钮时“切换”状态变量来呈现。到目前为止,一切都很好:选择器呈现,我可以有效地选择文件(并获取相应的 URL 集合onCompletion
),这又会关闭选取器视图并设置绑定状态变量showFileImporter
回到false
, 正如它应该。
此外,如果在呈现选择器后,用户点击视图 UI 上的“取消”按钮,则选择器将被适当地关闭,并且绑定变量将设置为false
- 再次,理应如此。
当您通过点击选择器视图外部来关闭选择器时,就会出现问题。
选择器被关闭,好吧,但是绑定的变量没有更新 - 因此,在我的例子中,用户必须点击“选择文件”按钮两次才能让选择器预设自身,显然是因为当以这种方式关闭时的价值showFileImporter
状态变量未更新,通过点击按钮触发的切换操作会将其设置为false
“首先”,然后true
第二次点击,然后触发选择器演示。
有人知道这是否是一个错误吗?我是否做了一些本质上错误的事情,或者错过了什么?为了完整起见,我提供了一个展示此行为的示例代码:
struct ContentView: View {
@State private var showFileImporter: Bool = false
var body: some View {
VStack {
Button("Pick Some Files...") {
showFileImporter.toggle()
}
}
.fileImporter(
isPresented: $showFileImporter,
allowedContentTypes: [.video, .audio, .image],
allowsMultipleSelection: true,
onCompletion: { result in
/* ...some code here */
})
}
}
非常感谢任何指示、提示或帮助,所以提前致谢。
这是一个经过认证的错误(由 Apple 确认)。希望很快就能得到解决。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)