8

今のところ、UIKit を使用して完全に構築されたアプリケーションがあります。ただし、いくつかの UIViewController を置き換えるために、いくつかの SwiftUI ビューの実装を開始できるようにしたいと考えています。

ボタンタップで UIViewController から SwiftUI View に移動するためにこれを行うことができました:

    @IBAction func buttonTapped(_ sender: Any) {
        let newView = UIHostingController(rootView: SwiftUIView(viewObj: self.view, sb: self.storyboard, dismiss: self.dismiss) )
        view.window?.rootViewController = newView
        view.window?.makeKeyAndVisible()
    }

私の質問は、単一の SwiftUI ビューから UIViewController にどのように移行すればよいですか?(アプリケーションの残りの部分は UIKit にあるため)? SwiftUI ビューに、タップで UIViewController に戻るためのボタンがあります。私はもう試した:

  1. viewおよびstoryboardオブジェクトを SwiftUI ビューに渡し、上記のコードと同様の処理を呼び出して現在のビュー コントローラーを変更します。ただし、シミュレーターで試しても何も起こりません。
  2. .presentSwiftUI ビューをモーダルに表示するために使用します。これは機能し、SwiftUI ビューを.dismissそれ自体に許可できます。ただし、これはモーダルでしか機能しないため、適切に機能するようにしたいと考えています (つまり、画面の変更)。

ここに私の単純なSwiftUIビューがあります:

struct SwiftUIView: View {
    var viewObj:UIView? // Perhaps use this for transition back?
    var sb:UIStoryboard?
    var dismiss: (() -> Void)?

    var body: some View {

        Button(action: {
            // Do something here to Transition
        }) {
            Text("This is a SwiftUI view.")
        }
    }
}

SwiftUI を UIKit に適切に統合する方法を理解するのに問題があります。逆ではなく、これに対する答えであるかどうかはわかりません。UIViewControllerRepresentableこれに対する解決策、代替案、または役立つ知識は大歓迎です。再度、感謝します!

4

4 に答える 4