1. ホーム
  2. swift

[解決済み] SwiftUIでビューを動的に隠す

2023-01-05 03:50:35

質問

を条件付きで非表示にしようとしています。 DatePicker を条件付きで隠そうとしています。しかし、私は不一致の型に何らかの問題を抱えています。

var datePicker = DatePicker($datePickerDate)
if self.showDatePicker {
    datePicker = datePicker.hidden()
}

この場合 datePickerDatePicker<EmptyView> 型ですが datePicker.hidden()_ModifiedContent<DatePicker<EmptyView>, _HiddenModifier> . ですから、私は datePicker.hidden()datePicker . このバリエーションを試しましたが、うまくいく方法が見つからないようです。何かアイデアはありますか?

アップデイト

をアンラップすることができます。 _ModifiedContent 型を使って、その下にある型を取得することができます。 content プロパティを使用して、基礎となる型を取得します。しかし、これでは根本的な問題は解決しません。そのため content プロパティは、元の、修正されていない日付ピッカーにしか見えません。

どのように解決するのですか?

動的に変数を設定し、それをビューで使用するのではなく、この方法で日付ピッカーを非表示または表示できることがわかりました。

struct ContentView : View {
    @State var showDatePicker = true
    @State var datePickerDate: Date = Date()

    var body: some View {
        VStack {
            if self.showDatePicker {
                DatePicker($datePickerDate)
            } else {
                DatePicker($datePickerDate).hidden()
            }
        }
    }
}

あるいは、オプションで、日付ピッカーを隠す代わりに含めないようにすることもできます。

struct ContentView : View {
    @State var showDatePicker = true
    @State var datePickerDate: Date = Date()

    var body: some View {
        VStack {
            if self.showDatePicker {
                DatePicker($datePickerDate)
            }
        }
    }
}