Sim*_*mon 2 xcode image ios swift swiftui
我真的是斯威夫特的新手。我究竟做错了什么?为什么按下时图像没有更新?我找不到任何关于状态监听器的信息。
这是捆绑两个视图的视图:
import SwiftUI
struct FoodContentView: View {
var body: some View {
VStack {
imageView.gesture(tap)
FoodContentTextView().position(x: bodyWidth/3, y: bodyHeight/2)
}
}
}
var imageView = FoodContentImageView(selectedImage: "CheeseBurger")
let tap = TapGesture()
.onEnded { _ in
if imageView.imageSelected == "Burger" {
imageView.imageSelected = "CheeseBurger"
print(imageView.imageSelected)
} else {
imageView.imageSelected = "Burger"
print(imageView.imageSelected)
}
}
Run Code Online (Sandbox Code Playgroud)
这是定义图像的视图:
struct FoodContentImageView: View {
var imageSelected: String
init(selectedImage: String){
imageSelected = selectedImage
}
var body: some View {
Image(imageSelected).resizable().frame(width: 200, height: 200, alignment: .center).scaledToFit()
}
}
Run Code Online (Sandbox Code Playgroud)
你把事情搞得非常复杂,没有必要。FoodContentImageView只需要知道图像的名称:
struct FoodContentImageView: View {
var imageName: String
var body: some View {
Image(imageName).resizable().frame(width: 200, height: 200, alignment: .center).scaledToFit()
}
}
Run Code Online (Sandbox Code Playgroud)
而你只需要传入名字即可。如果您将其存储为@State,它将在任何更改时自动更新:
struct ContentView: View {
@State var text = "CheeseBurger"
var body: some View {
VStack {
FoodContentImageView(imageName: text)
.onTapGesture {
if self.text == "Burger" {
self.text = "CheeseBurger"
} else {
self.text = "Burger"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且根本不需要引用imageViewand 。tapGesture
| 归档时间: |
|
| 查看次数: |
3017 次 |
| 最近记录: |