Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SwiftUI-如何在单击时更改按钮的图像?_Swift_Button_Swiftui - Fatal编程技术网

SwiftUI-如何在单击时更改按钮的图像?

SwiftUI-如何在单击时更改按钮的图像?,swift,button,swiftui,Swift,Button,Swiftui,我正试图使其成为这样,当我单击其他按钮列表中的一个按钮时,所单击按钮的图像会从一颗星变为另一颗星。填充。请帮忙 ForEach(pies, id: \.self) { pie in Button(action: { // some action }) { HStack { Image(systemName: "star") Text(pie) Spacer()

我正试图使其成为这样,当我单击其他按钮列表中的一个按钮时,所单击按钮的图像会从一颗星变为另一颗星。填充。请帮忙

ForEach(pies, id: \.self) { pie in
      Button(action: {
          // some action
       }) {
       HStack {
           Image(systemName: "star")
           Text(pie)
           Spacer()
       }
}
您可以使用@State变量存储图像名称,并在单击按钮时进行更改:

@State var imageName: String = "star"

ForEach(pies, id: \.self) { pie in
      Button(action: {
          self.imageName = "star.fill"
       }) {
       HStack {
           Image(systemName: imageName)
           Text(pie)
           Spacer()
       }
}
您可以使用@State变量存储图像名称,并在单击按钮时进行更改:

@State var imageName: String = "star"

ForEach(pies, id: \.self) { pie in
      Button(action: {
          self.imageName = "star.fill"
       }) {
       HStack {
           Image(systemName: imageName)
           Text(pie)
           Spacer()
       }
}

我有一个播放/暂停按钮。 按钮图像根据是否播放而变化

在我看来,我有一个变量:

@State var isPlaying : Bool = false
然后,无论何时单击该按钮,isPlaying都在更改->如果为真,则变为假,反之亦然。按钮图像由三值运算符设置


我有一个播放/暂停按钮。 按钮图像根据是否播放而变化

在我看来,我有一个变量:

@State var isPlaying : Bool = false
然后,无论何时单击该按钮,isPlaying都在更改->如果为真,则变为假,反之亦然。按钮图像由三值运算符设置


谢谢你的回答!不幸的是,这并不能解决我的问题,因为当单击其中一个按钮时,它会将ForEach下的所有按钮都更改为star.fill。我的目标是只让点击的按钮改变它的图像。你知道这里可以做什么吗?每个按钮使用不同的变量?在SwiftUI中,按钮似乎是少数几个不基于UIKit构建的视图之一。好处是SwiftUI中的按钮是一个非常灵活的结构。这样做的缺点是,它不支持状态的概念以及UIKit按钮内置的单击/不单击的不同图像/标签,至少在当前版本的SwiftUI中,您确实需要从外部状态模型驱动按钮图像名称,正如pawello2222所说。谢谢您的回答!不幸的是,这并不能解决我的问题,因为当单击其中一个按钮时,它会将ForEach下的所有按钮都更改为star.fill。我的目标是只让点击的按钮改变它的图像。你知道这里可以做什么吗?每个按钮使用不同的变量?在SwiftUI中,按钮似乎是少数几个不基于UIKit构建的视图之一。好处是SwiftUI中的按钮是一个非常灵活的结构。这样做的缺点是,它不支持状态的概念以及UIKit按钮内置的单击/不单击的不同图像/标签,至少在当前版本的SwiftUI中,您确实需要从外部状态模型驱动按钮图像名称,正如pawello2222所说。