gpt4 book ai didi

swift - 修改嵌套对象中的状态

转载 作者:行者123 更新时间:2023-12-02 02:11:29 25 4
gpt4 key购买 nike

我是 Swift 新手,遇到了这个问题。我想在工具栏中制作一个播放/暂停按钮,我决定将工具栏代码移动到它自己的对象Toolbar。该按钮在按下时应该改变其图像,但当我按下它时,状态不会改变。我做错了什么?

struct ContentView: View {
var body: some View {
NavigationView {
List{
Text("asdf")
}
.toolbar {
Toolbar()
}
}
}
}

struct Toolbar: ToolbarContent {
@State var started = false

var body: some ToolbarContent {
ToolbarItem(id:"start-button", placement: .primaryAction) {
Button(action: {
self.started.toggle()
}) {
Image(systemName: self.started == true ? "pause.fill" : "play.fill")
.foregroundColor(.white)
}
}
}
}

最佳答案

使用双向绑定(bind)。

struct ContentView: View {
@State private var started = false //<-- Here

var body: some View {
NavigationView {
List{
Text("asdf")
}
.toolbar {
Toolbar(started: $started) //<-- Here
}
}
}
}

struct Toolbar: ToolbarContent {

@Binding var started: Bool //<-- Here

var body: some ToolbarContent {
ToolbarItem(id:"start-button", placement: .primaryAction) {
Button(action: {
self.started.toggle()
}) {
Image(systemName: self.started ? "pause.fill" : "play.fill")
.foregroundColor(.white)
}
}
}
}

关于swift - 修改嵌套对象中的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67693148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com