[解決済み] SwiftUI ViewBuilderブロックのswitchステートメントに代わるもの?
2023-07-26 08:21:36
質問
⚠️ 2020年6月23日 編集:Xcode 12から、switch文とif let文の両方がViewBuilderでサポートされることになりました!
私はSwiftUIを使用して私のアプリを複製しようとしてきました。RootViewController があり、enum 値に依存して、異なる子ビューコントローラを表示します。SwiftUIでは、ビューコントローラの代わりにビューを使用するので、私のコードは次のようになります。
struct RootView : View {
@State var containedView: ContainedView = .home
var body: some View {
// custom header goes here
switch containedView {
case .home: HomeView()
case .categories: CategoriesView()
...
}
}
}
残念ながら、警告が出ます。
制御フロー文を含むクロージャは、関数ビルダでは使用できません。
ViewBuilder
.
それで、この動作を再現できるように、switchに代わるものはありますか?
どのように解決するのですか?
⚠️ 2020年6月23日 編集:Xcode 12から、switch文とif let文の両方がViewBuilderでサポートされるようになります!(*^^*)
皆さん、回答ありがとうございます。で解決策を見つけました。
Apple の Dev Forums
.
それはによって答えられる
Kiel Gillard
. 解決策は、Lu_、Linus、Moが提案したように、スイッチを関数で抽出することですが、ビューをラップするために
AnyView
でラップする必要があります。
struct RootView: View {
@State var containedViewType: ContainedViewType = .home
var body: some View {
VStack {
// custom header goes here
containedView()
}
}
func containedView() -> AnyView {
switch containedViewType {
case .home: return AnyView(HomeView())
case .categories: return AnyView(CategoriesView())
...
}
}
関連
-
[解決済み] SwiftUIのテキストアライメント
-
[解決済み】Swift。switchステートメントでクラスの型をテストする
-
[解決済み] SwiftUIです。バインド変数でカスタムinitを実装する方法
-
[解決済み] SwiftUIで画像をリサイズするには?
-
[解決済み] クラス 'ViewController' は swift で初期化されません。
-
[解決済み] SwiftUI。TextFieldをファーストレスポンダーにするには?
-
[解決済み] Swift 1.2では、宣言は「final」と「dynamic」の両方にはなり得ないというエラーがある
-
[解決済み] 非'@objc'メソッドは'@objc'プロトコルのオプション要件を満たしていない
-
[解決済み] ""内の二重引用符を印刷するには?
-
[解決済み] ボタンを無効化する
最新
-
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で警告を消すには?
-
[解決済み] Swiftのリバースレンジ
-
[解決済み] Swiftで範囲を作成する方法は?
-
[解決済み] Swiftでenumの関連値を無視して比較する方法は?
-
[解決済み] Swiftでenumをプロトコルに準拠させるには?
-
[解決済み] swiftでデータを16進文字列に変換する方法
-
[解決済み] swift 3.0 Data to String?
-
[解決済み] Swiftで配列の最後の要素を取得する方法は?
-
[解決済み] rootViewControllerとアニメーションを入れ替える?
-
[解決済み] Swift で Double と Float の最大値を求める方法