Динамически скрывающий вид в SwiftUI - PullRequest
2 голосов
/ 07 июня 2019

Я пытаюсь условно скрыть DatePicker в SwiftUI. Однако у меня возникла проблема с несовпадающими типами:

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

В этом случае datePicker - это тип DatePicker<EmptyView>, а datePicker.hidden() - это _ModifiedContent<DatePicker<EmptyView>, _HiddenModifier>. Поэтому я не могу назначить datePicker.hidden() на datePicker. Я попробовал варианты этого и не могу найти способ, который работает. Есть идеи?

UPDATE

Вы можете развернуть тип _ModifiedContent, чтобы получить базовый тип, используя его свойство content. Тем не менее, это не решает основную проблему. Свойство content представляется просто исходным неизмененным средством выбора даты.

1 Ответ

3 голосов
/ 07 июня 2019

Вместо того, чтобы динамически устанавливать переменную и использовать ее на мой взгляд, я обнаружил, что могу скрыть или показать средство выбора даты следующим образом:

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)
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...