SwiftUI将变量从视图传递到类
使用SwiftUI将变量从视图传递到类,swift,swiftui,Swift,Swiftui,使用NavigationLink(目的地:ProductDetailsView(displayedProduct\u id:Detaliprodus.id))我将Detaliprodus.id从mainview传递到ProductDetailsView MyProductDetailsView外观: struct ProductDetailsView: View { var displayedProduct_id = "" @ObservedObject var disp
NavigationLink(目的地:ProductDetailsView(displayedProduct\u id:Detaliprodus.id))
我将Detaliprodus.id
从mainview
传递到ProductDetailsView
MyProductDetailsView
外观:
struct ProductDetailsView: View {
var displayedProduct_id = ""
@ObservedObject var displayedProduct = ReadProductDetail(productID: "9gioS1HgMl")
var body: some View {
VStack{
Image(uiImage: displayedProduct.poza_principala)
Text(displayedProduct.tip_vanzare)
Text(displayedProduct.titlu_produs)
etc.}
我的问题是如何使用displayedProduct\u id
来显示产品详细信息,而不是使用硬编码的值(我现在已经有了)
阅读我在课堂上提供的信息:
class ReadProductDetail: ObservableObject {
@Published var poza_principala : UIImage = UIImage(imageLiteralResourceName: "logo")
@Published var tip_vanzare = ""
@Published var titlu_produs = ""
@Published var pret = ""
@Published var marime = ""
@Published var gen = ""
@Published var descriere = ""
@Published var user = ""
@Published var telefon = ""
@Published var rezultat = [DisplayedProductDetailes]()
var productID = ""
init(productID: String) {
let query = PFQuery(className:"Produse")
query.includeKey("poza_principala")
query.includeKey("tip_vanzare")
query.includeKey("marime")
query.includeKey("gen")
query.includeKey("user")
query.getObjectInBackground(withId: productID) { (object, error) in
if error == nil && object != nil {
let poza_p_main1 = object!["poza_principala"] as! PFObject
let poza_p_main2 = poza_p_main1["poza_principala"] as! PFFileObject
poza_p_main2.getDataInBackground { (imageData: Data?, error: Error?) in
if let error = error {
print(error.localizedDescription)
} else if let imageData = imageData {
self.poza_principala = UIImage(data:imageData)!
}
}
let tip_vanzare_main = object!["tip_vanzare"] as! PFObject
self.tip_vanzare = tip_vanzare_main["tip_vanzare"] as? String ?? "N/A"
self.titlu_produs = object!["titlu_produs"] as? String ?? "N/A"
self.pret = object!["pret"] as? String ?? "N/A"
let marime_main = object!["marime"] as! PFObject
self.marime = marime_main["marime"] as? String ?? "N/A"
let gen_main = object!["gen"] as! PFObject
self.gen = gen_main["gen"] as? String ?? "N/A"
self.descriere = object!["descriere"] as? String ?? "N/A"
let user_main = object!["user"] as! PFObject
self.user = user_main["username"] as? String ?? "N/A"
self.telefon = object!["telefon"] as? String ?? "N/A"
} else {
self.titlu_produs = "Indisponibil"
}
}
}//end init() }
我尝试过使用
@State
和@Binding
,但出现了一些错误。以下内容应该适合您
struct ProductDetailsView: View {
@ObservedObject var displayedProduct: ReadProductDetail
init(displayedProduct_id: String) {
self.displayedProduct = ReadProductDetail(productID: displayedProduct_id)
}
var body: some View {
// ... other code
}
}
以下内容应该适合您
struct ProductDetailsView: View {
@ObservedObject var displayedProduct: ReadProductDetail
init(displayedProduct_id: String) {
self.displayedProduct = ReadProductDetail(productID: displayedProduct_id)
}
var body: some View {
// ... other code
}
}