轻松结合 UIKit 项目使用 SwiftUI View

🧭 SwiftUINavigator

轻松地将 SwiftUI 视图与 UIKit 项目一起使用。

🤔 为什么需要 SwiftUINavigator?

使用 UIHostingController 时,我遇到了难以预测且无法解决的 Bug。这就是为什么我创建 SwiftUINavigator 来解决这些问题的原因。

⚒️ 工作原理

스크린샷 2023-10-15 오후 2 20 50

✔️ 简单示例

let viewController = HomeView() // View
    .asViewController() // WrapperViewController
    .title("HomeView") // UIViewController
    .backgroundColor(.gray) // UIViewController
    .hidesBottomBarWhenPushed(true) // UIViewController

weak var navigator: Navigator?
let controller = DestinationView().asViewController()
navigator.push(controller)

weak var navigator: Navigator?
let controller = DestinationView().asViewController()
navigator?.present(controller, .popover)

weak var navigator: Navigator?
navigator.pop(to: "HomeView")

weak var navigator: Navigator?
navigator.pop()

weak var navigator: Navigator?
navigator.dismiss()

✔️ 项目示例

UIKit 方面

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

    guard let scene = (scene as? UIWindowScene) else { return }
    window = UIWindow(frame: scene.coordinateSpace.bounds)
    window?.windowScene = scene
    
    let controller = RootView().asViewController()
    let navigationController = UINavigationController(rootViewController