Swiftui Swift UI 2 DocumentGroup获取导航栏按钮操作

Swiftui Swift UI 2 DocumentGroup获取导航栏按钮操作,swiftui,ios14,documentgroup,Swiftui,Ios14,Documentgroup,我正在使用新的“DocumentGroup”场景进行一个iOS 14(目前正在进行Beta)项目,我真的不知道如何在导航栏中检测事件,比如按下“”,我最后在我的文档的ContentView.body中执行了以下操作: NavigationView{ 侧栏(文档:$document) .navigationBarItems(前导:按钮(“后退”){ //找出如何以编程方式返回。。。 }) 文本(“未选择任何内容”) } .navigationBarHidden(真) 我基本上取消了文档浏览器附带


我正在使用新的“DocumentGroup”场景进行一个iOS 14(目前正在进行Beta)项目,我真的不知道如何在导航栏中检测事件,比如按下“”,我最后在我的文档的
ContentView.body
中执行了以下操作:

NavigationView{
侧栏(文档:$document)
.navigationBarItems(前导:按钮(“后退”){
//找出如何以编程方式返回。。。
})
文本(“未选择任何内容”)
}
.navigationBarHidden(真)
我基本上取消了文档浏览器附带的自动
NavigationView
。这并不理想有很多原因,第一个原因是我还没有真正弄清楚如何回去。如果我们能够访问底层的
NavigationView
,这样我就可以设置我的边栏和内容,这不会是一个问题,但到目前为止,我在这里也没有成功

DocumentGroup
看起来有点像半生不熟的垃圾。为什么它是推送,而不是呈现在一个“空”文档上?为什么我不能设置
文档组
等的强调颜色。我已经为这些项目写了反馈,但谁知道在发布之前是否会得到解决

最后一个选择是自己接管,而不是使用
DocumentGroup
,使用
UIDocumentBrowserViewController
作为
UIViewControllerRepresentable
,继续你的生活。我可能很快就会到这里来

更新: 我抛弃了
DocumentGroup
。这根本没有任何意义。推送内容?哑的改变色彩?不能我的应用程序还取消了SwiftUI应用程序条目,因此我可以完全控制UIDocumentBrowserViewController,我建议您也这样做。唯一困难的部分是如何最好地利用基于
UIDocument
的存储,而不是更好的
FileDocument
SwiftUI提供的存储。为此,我基本上做到了:

最终类文档:UIDocument,ObservableObject{
var someDocumentProperty:String=“”{
意志{
//这将更新SwiftUI视图层次结构
objectWillChange.send()
}迪塞特{
//每当您更改此属性时,它将自动保存
updateChangeCount(.done)
}
}
}

现在,它将完全与SwiftUI视图一起工作,正确保存所有内容。

完全相同的问题。简而言之,我决定看看是否仍在创建UIApplication.shared,并且在创建UIApplication.shared时,我能够以编程方式返回,如下所示:

private func goBack() {
#if canImport(UIKit)
guard let currentWindow = UIApplication.shared.windows.first,
      let documentBrowser = currentWindow
      .rootViewController as? UIDocumentBrowserViewController
else
{
  logw(
    "<\(#fileID) \(#function)> Failed to retrieve document browser."
  )
  return
}

documentBrowser.dismiss(animated: true) {
  logi("<\(#fileID) \(#function)> the document browser has dismissed it's child.")
}

#endif

非常感谢。我一直在寻找一个简单的答案,因为我想保留DocumentGroup功能,但放弃内置的导航栏。
struct ContentView: View {
@Binding var document: DocumentAppDocuments

var body: some View {
    TextEditor(text: $document.text)
}
private func goBack() {
#if canImport(UIKit)
guard let currentWindow = UIApplication.shared.windows.first,
      let documentBrowser = currentWindow
      .rootViewController as? UIDocumentBrowserViewController
else
{
  logw(
    "<\(#fileID) \(#function)> Failed to retrieve document browser."
  )
  return
}

documentBrowser.dismiss(animated: true) {
  logi("<\(#fileID) \(#function)> the document browser has dismissed it's child.")
}

#endif
`UIApplication.shared.windows.first?.rootViewController?.dismiss(animated: true) { print("the document browser has dismissed it's child.") }`