Swift/Swift UI:我如何在我的视图结构中设置这个可选的初始值?

  • 本文关键字:Swift 设置 结构 UI 视图 swift swiftui
  • 更新时间 :
  • 英文 :


我将集数据显示为垂直堆栈中的列表。

当用户点击某一集时,我想将该集存储为selected_episode

在视图结构的顶部,我实例化了json文件中的剧集数组。然后,我要确保所选的剧集最初是第一集。我想我可以在init()中做到这一点。

然而,selected_episode似乎从未被设置。在按钮动作中,它不会展开,因为它总是nil。

在哪里/如何设置selected_episode的初始值?

struct ContentView: View {
let episodes = Bundle.main.decode([Episode].self, from: "episodes.json" )

@State private var selected_episode : Episode?
init() {
selected_episode = episodes.first
}
var body: some View {
VStack {
List(episodes) { episode in
Button(action: {
if let obj = selected_episode {
if (episode.id != obj.id) {
selected_episode = episode
}
}

...
  1. 移动代码将数据加载到init方法
  2. State(wrappedValue:)初始化@State属性
  3. 请命名变量lowerCamelCase

struct ContentView: View {
let episodes : [Episode]

@State private var selectedEpisode : Episode?
init() {
self.episodes = Bundle.main.decode([Episode].self, from: "episodes.json" )
_selectedEpisode = State(wrappedValue: episodes.first)
}
...

最新更新