[解決済み] 既存のUIKitアプリケーションにSwiftUIビューを含める
質問
既存のUIKitアプリケーションと並行して、SwiftUIでビューを構築することは可能でしょうか?
私はObjective-Cで書かれた既存のアプリケーションを持っています。私はSwift 5に移行し始めました。既存のUIKitの.xibのビューと一緒にSwiftUIを使用できるかどうか疑問に思っています。
つまり、私は同じアプリでSwiftUIで構築されたいくつかのビューとUIKitで構築されたいくつかの他のビューが欲しいのです。もちろん、2つを混在させることはできません。
SomeObjCSwiftProject/
SwiftUIViewController.swift
SwiftUIView.xib
UIKitViewController.swift
UIKitView.xib
互いに協力し合う
どのように解決するのか?
edit 05/06/19: @Departamento B さんの回答で示唆された UIHostingController についての情報を追加しました。彼に謝意を表します。
UIKitの中でSwiftUIを使う
UIKitの中でSwiftUIを使うには
SwiftUI
コンポーネントを既存の
UIKit
をラップすることで、既存の
SwiftUI
View
を
UIHostingController
のようにします。
let swiftUIView = SomeSwiftUIView() // swiftUIView is View
let viewCtrl = UIHostingController(rootView: swiftUIView)
をオーバーライドすることも可能です。
UIHostingController
を上書きして、自分のニーズに合わせてカスタマイズすることもできます。
preferredStatusBarStyle
を介して動作しない場合は、手動で
SwiftUI
を介して期待通りに動作しない場合は、手作業で行います。
UIHostingController
は文書化されています
はこちら
.
SwiftUIでUIKitを使う
もし既存の
UIKit
ビューで使用する必要があります。
SwiftUI
環境では
UIViewRepresentable
プロトコルは助けになります! これは、文書化された
はこちら
で、実際に動いているところを見ることができます。
この
のアップル公式チュートリアルで見ることができます。
互換性
このため
SwiftUI
は iOS 13 では使用できませんのでご注意ください。
SwiftUI
は iOS 13 以降でのみ利用可能です。参照
これ
の投稿を参照してください。
を使用したい場合は
SwiftUI
を使いたい場合、iOS 13 未満をターゲットとするプロジェクトで
SwiftUI
構造体を
@available(iOS 13.0.0, *)
属性を持つ構造体です。
関連
-
Swiftがエラーを報告。アボートトラップ:6
-
Swift Error fatal error: Optional value のアンラップ中に予期せず nil を発見した。
-
Swift の Optional 値 && Optional のアンラップ時に予期せず nil が検出された場合の説明
-
[解決済み] iOSのUISceneDelegate/SwiftUIからオプトアウトする。
-
[解決済み] Swiftで1つのビューコントローラの向きを縦向きのみに固定する方法
-
[解決済み] クラス 'ViewController' は swift で初期化されません。
-
[解決済み] SwiftUI。TextFieldをファーストレスポンダーにするには?
-
[解決済み] UIViewの定高制約をプログラムで更新するには?
-
[解決済み] Swift - 複数条件でオブジェクトの配列を並べ替える
-
[解決済み] swiftにおける "precondition "と "assert "の違いとは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Swiftがエラーを報告。アボートトラップ:6
-
swift 4.0でのdispatch_async,dispatch_afterの使用について
-
[解決済み] SwiftUIはiOS 12.x以前と後方互換性があるのでしょうか?
-
[解決済み] Swiftダブルからストリング
-
[解決済み] swiftで改行なしの印刷をする
-
[解決済み] クラス 'ViewController' は swift で初期化されません。
-
[解決済み] タスクが終了するまで待機する
-
[解決済み] Swiftで警告を消すには?
-
[解決済み] Swiftで複数のカスタムセルを持つUITableview
-
[解決済み] swiftにおける "precondition "と "assert "の違いとは?