从 UIHostingViewController 呈现一个 UIViewController

问题描述

我开始将我的应用从 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,我可以查看我的数据并使用拖动手势。

解决方法

现在,您正在创建一个新的 select id,name from u_users customers left outer join t_orders orders on customers.id = orders.userid where orders.status=='payment pending' Host 并尝试通过它们进行展示。但是,它们不是视图层次结构的一部分,因此不会显示任何内容。

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...