我想将View作为独立的View启动,而没有导航层次结构。我不想使用NavigationButton的原因是我不想让用户返回到调用表单。
我尝试了以下方法,该方法类似于在ScenceDelegate中启动第一个视图的方式,但是没有任何反应:
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let window = appDelegate.getNewWindow()
window.rootViewController = UIHostingController(rootView: NewView())
window.makeKeyAndVisible()
我有合理的理由不使用导航UI,为使简短起见,我省略了解释。我避免使用情节提要来使其尽可能简单。
感谢您提出任何解决方案建议。
答案 0 :(得分:1)
这就是我完成加载新的根视图的方式。
我在AppDelegate代码中添加了以下内容
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
...
func loadNewRootSwiftUIView(rootViewController: UIViewController)
{
let window = UIWindow(frame: UIScreen.main.bounds)
window.rootViewController = rootViewController
self.window = window
window.makeKeyAndVisible()
}
}
并在我的表单中放置以下内容:
struct LaunchView : View {
var body: some View {
VStack {
Button(
action: {
LaunchLoginView()
},
label: {
Text("Login")
}
)
}
}
}
func LaunchLoginView(){
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let vContoller = UIHostingController(rootView: LoginView())
appDelegate.loadNewRootSwiftUIView(rootViewController: vContoller)
}