0

我开始从 to 重建我的应用Swift程序SwiftUI

我有一个UIViewController使用UIPresentationController并具有我想按原样使用的自定义拖动手势(现在)。

我试图弄清楚我是否能够从我的SwiftUI视图中呈现这个。

以下是我导航到 SwiftUI 视图的方式:

let dataStore = DataStore()
let vc = Host(rootView: SwiftUIView(store: dataStore))
self.navigationController?.pushViewController(vc, animated: true)
 

呈现我的控制器的方法在我的 DataStore 中。

这是我正在尝试的:

func displayDetailController(forData data: Data?) {
     let height = // I set a custom height here as I can drag 
     //this view to pop to the middle, to the top, or dismiss
     guard let dat = data else { return }
     let const = DetailViewController.Constructor(data: dat)
     let vc = DetailViewController.loadFromNib(constructor: const, height: height) 
        
     let hostingController = Host(rootView: SwiftUIView(store: self))
     hostingController.navigationController?.present(vc, animated: true)
}

我有一个Button当点击时会调用displayDetailController但没有任何反应。

目标是我的 DetailViewController,我可以看到我的数据并使用拖动手势。

4

1 回答 1

1

现在,您正在创建一个新的HostSwiftUIView尝试从它们中呈现。但是,它们不是视图层次结构的一部分,因此不会显示任何内容。

相反,您可能希望将引用传递给您的实际视图控制器。此代码不完整,因为您没有包含所有内容的定义,但它应该可以帮助您入门:

let dataStore = DataStore()
dataStore.navigationController = self.navigationController
let vc = Host(rootView: SwiftUIView(store: dataStore))
self.navigationController?.pushViewController(vc, animated: true)
class DataStore {
  var navigationController : UINavigationController?

  // other code

  func displayDetailController(forData data: Data?) {
     let height = 100
     guard let dat = data else { return }
     let const = DetailViewController.Constructor(data: dat)
     let vc = DetailViewController.loadFromNib(constructor: const, height: height) 
     self.navigationController?.present(vc, animated: true)
  }
}
于 2021-06-17T22:00:26.873 回答