今のところ、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 に戻るためのボタンがあります。私はもう試した:
view
およびstoryboard
オブジェクトを SwiftUI ビューに渡し、上記のコードと同様の処理を呼び出して現在のビュー コントローラーを変更します。ただし、シミュレーターで試しても何も起こりません。.present
SwiftUI ビューをモーダルに表示するために使用します。これは機能し、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
これに対する解決策、代替案、または役立つ知識は大歓迎です。再度、感謝します!