我试图有条件地在SwiftUI中隐藏一个DatePicker.但是,我对不匹配的类型有任何问题:

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

在本例中,datePickerDatePicker<EmptyView>型,而datePicker.hidden()_ModifiedContent<DatePicker<EmptyView>, _HiddenModifier>型.所以我不能把datePicker.hidden()分配到datePicker.我try 过各种各样的方法,但似乎找不到有效的方法.有什么 idea 吗?

UPDATE

您可以使用_ModifiedContent类型的content属性来展开它以获取基础类型.然而,这并不能解决根本问题.content属性似乎只是原始的、未经修改的日期 Select 器.

推荐答案

我发现我可以通过以下方式隐藏或显示日期 Select 器,而不是动态设置变量并在视图中使用它:

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()
            }
        }
    }
}

或者,也可以不包括日期 Select 器,而将其隐藏:

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

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

Swift相关问答推荐

如何模拟可以立即返回和/或与Deliverc/await同步返回的CompletionButtons风格代码?

具有@Published属性的双向数据流动,能够忽略事件

如何将EnvironmentObject从UIKit视图控制器传递到SwiftUI视图

通过SwiftUI中的列表 Select 从字典中检索值

OBJC代码中Swift 演员的伊瓦尔:原子还是非原子?

如何在AudioKit中实现自定义音效 node ?

如何在每天午夜重置布尔值

SWIFT异步/等待,多个监听程序

在一行语句中比较Date.now的相等性是否安全

我如何在 swift 中的 viewdidload 之前进行委托?

根据其属性组合 2 个模型以在 Swift 中创建另一个模型

DispatchQueue.main.asyncAfter 等同于 Swift 中的 struct 化并发?

RealityKit - 从中心zoom 模型

SwiftUI:异步网络请求后@State 值不更新

如何在 SwiftUI 的 fileImporter 中为 allowedContentTypes 设置 xcodeproj 类型?

将强制向下转换视为可选将永远不会产生零

无法推断泛型参数的参数

Swift 2.0 按属性对对象数组进行排序

swift - 我可以从我的自定义初始化方法中调用 struct 默认成员初始化吗?

如何判断 firebase 数据库值是否存在?