У меня есть существующее приложение, которое я хочу заменить существующим встроенным UIKit на тот, который я написал в SwiftUI. Я успешно использовал v c = UIHostingController (rootView: mySwiftUIView ()) и self.window.rootViewController = v c в моем AppDelegate, чтобы загрузить его при первом запуске приложения. Итак, у меня работает часть UIKit to SwiftUI.
В конце установки SwiftUI у меня есть кнопка, которую я хочу использовать для перехода к основному приложению V C. Одним из вариантов является использование следующего:
sheet(isPresented: $initialVCPresented) {
VCSwiftUIView(storyboard: "Main", VC: "RootVC")
}
с, ...
//
// VCSwiftUIView.swift
//
// Created by Schumacher, Dan on 2/12/20.
// Copyright © 2020 Schumacher, Dan. All rights reserved.
//
import SwiftUI
import UIKit
struct VCSwiftUIView: UIViewControllerRepresentable {
let storyboard: String
let VC: String
func makeUIViewController(context: UIViewControllerRepresentableContext<VCSwiftUIView>) -> AnimatedTabBarController {
//Load the storyboard
let loadedStoryboard = UIStoryboard(name: storyboard, bundle: nil)
//Load the ViewController
return loadedStoryboard.instantiateViewController(withIdentifier: VC) as! AnimatedTabBarController
}
func updateUIViewController(_ uiViewController: AnimatedTabBarController, context: UIViewControllerRepresentableContext<VCSwiftUIView>) {
}
}
Но это показывает UIKit V C модально, который я не хотеть.
Я не верю, что могу использовать NavigationLink (назначение: MainV C)), поскольку MainV C не является контроллером навигации.
Может кто-нибудь предложить мне какие-либо предложения о том, как перейти от моего представления SwiftUI к UITabBarContoller?
ОБНОВЛЕНИЕ:
Я попробовал следующий код в действии для моей кнопки SwiftUI. Я вижу, что UIKit TabBarV C вызывается (RootV C на раскадровке указывает на UITabBarViewController) через операторы печати в консоли, и экран мигает, но SwiftUI View остается на экране. Есть идеи, почему UIKit V C не отображается?
let window:UIWindow = UIWindow()
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let rootVC: UIViewController = storyboard.instantiateViewController(withIdentifier: "RootVC")
window.rootViewController = rootVC
window.makeKeyAndVisible()