首页 > 解决方案 > 如何根据日期显示不同的视图

问题描述

我需要在某一天显示某个视图,所以尝试根据日期来做,但它不起作用,请帮我解决这个问题

  ...
  func UpdateData() {
            
    let current = Calendar.current
            
    let date = current.component(.day, from: self.date)
    let weekDay = current.component(.weekday, from: self.date)
    let day = current.weekdaySymbols[weekDay - 1]
            
    self.data = DateType(Day: day, Date: "\(date)")
  }
        
  struct DateType {
    var Day: String
    var Date: String
  }
    
  var body: some View {
    
    ZStack {
    
    if self.data.Day == DAY_1 {.       // <- here is my if statement
       WorkOutView()}

  }
}

标签: swiftuiswiftdate

解决方案


好的,让我从基础开始 -

首先也是最重要的规则,如果您需要更新您需要使用的任何视图source of truth并且是@State,但我们可以source of truth通过不同的属性在子视图中使用@ObservedObject, @Binding, @StateObject

因此,在您的代码中缺少代码源,需要更新视图。

所以如果你想改变基于天的视图,那么你需要像这样初始化

@State let date = current.component(.day, from: self.date)

如果需要,也可以更改下面的代码,如果只更改上面的代码有效,那么你很高兴。

struct DateType {
    @State var Day: String
    var Date: String
  }

推荐阅读