Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SwiftUI:.fileImporter修饰符在点击“取消绑定”时不更新绑定;“外部”;文件选择器_Ios_Swift_Swiftui - Fatal编程技术网

Ios SwiftUI:.fileImporter修饰符在点击“取消绑定”时不更新绑定;“外部”;文件选择器

Ios SwiftUI:.fileImporter修饰符在点击“取消绑定”时不更新绑定;“外部”;文件选择器,ios,swift,swiftui,Ios,Swift,Swiftui,我在SwiftUI视图中使用“.fileImporter”修饰符;它工作得很好,除了一个非常恼人的问题,我还没有找到任何地方的解决方案 “选择器”根据文档要求绑定到状态变量showFileImporter(最初设置为false),并配置为允许多个选择,当用户点击按钮时通过“切换”状态变量来显示。到目前为止,一切都很好:选择器显示,我可以有效地拾取文件(并获取相应的URL集合onCompletion),这反过来会取消选择器视图,并将绑定状态变量showFileImporter设置回false,这是

我在SwiftUI视图中使用“.fileImporter”修饰符;它工作得很好,除了一个非常恼人的问题,我还没有找到任何地方的解决方案

“选择器”根据文档要求绑定到状态变量
showFileImporter
(最初设置为false),并配置为允许多个选择,当用户点击按钮时通过“切换”状态变量来显示。到目前为止,一切都很好:选择器显示,我可以有效地拾取文件(并获取相应的URL集合
onCompletion
),这反过来会取消选择器视图,并将绑定状态变量
showFileImporter
设置回
false
,这是应该的。 此外,如果在显示选择器后,用户点击视图UI上的“取消”按钮,选择器将被适当地解除,绑定变量将再次设置为
false
,这是应该的

当您通过点击选择器视图外部来关闭选择器时,问题就会出现。

选取器会被解除,好吧,但是绑定变量不会被更新-因此,在我的例子中,用户必须点击“选取文件”按钮两次,以使选取器预设自身,显然,当以这种方式解除时,
showFileImporter
状态变量的值不会更新,点击按钮触发的切换操作将首先将其设置为
false
,然后在第二次点击时将其设置为
true
,然后触发选择器显示

有人知道这是不是一个bug吗?我是做错了什么,还是错过了什么?为了完整起见,我提供了一个示例代码,展示了这种行为:

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 */
        })
        
    }
}

非常感谢您的任何指点、提示或帮助,请提前感谢。

这是一个经过认证的错误(已由苹果确认)。希望很快就能解决。

这似乎是个bug。你应该向苹果公司提交一份报告。我也是这么想的。我已经提交了一份报告,但我的希望并没有那么高。。。谢谢你的评论。