I 2 structs wie unten angegeben habe:kann das Bild nicht richtig passieren tableviewcell
struct ProductImage {
let id : String
let url : URL
let isDefault : Bool
}
struct Product {
let name : String
let id : String
var images = [ProductImage]()
init(name : String, id: String) {
self.name = name
self.id = id
}
mutating func add(image: ProductImage) {
images.append(image)
}
}
Jetzt habe ich eine Kollektion, die einige Zellen auf sie mit jeweils ein Bild und ein Namensschild und eine ID damit beschriften. Es hat auch eine Schaltfläche und wenn ich darauf klicke, wird das Bild in der Collectionview-Zelle und auch der Name und die ID in einer TableView-Zelle angezeigt und in einem Array gespeichert. Nach der Rückkehr und dem Klicken des Knopfes des 2. collectionview
Gegenstandes, sehe ich jetzt 2 Zellen (1. und 2.). Dass ich wie so machte ...
func SellBtnTapped(_ sender: UIButton) {
let indexPath = collectionView?.indexPath(for: ((sender.superview?.superview) as! RecipeCollectionViewCell))
self.photoThumbnail = self.arrayOfURLImages[(indexPath?.row)!]
let myVC = storyboard?.instantiateViewController(withIdentifier: "productSellIdentifier") as! sellTableViewController
let productObject = productData1[(indexPath?.row)!]
if selectedItems == nil {
selectedItems = [Product(name:productObject.name, id: productObject.id)]
} else {
selectedItems?.append(productObject)
}
myVC.arrProduct = selectedItems
navigationController?.pushViewController(myVC, animated: true) }
Aber mein Problem ist, ich bin nicht in der Lage, das richtige Bild zu übergeben, wie ich den Namen und die ID zu tun. In meinem Fall ist der Name & id passed, aber das Bild ist falsch übergeben. Wie kann ich es reparieren...?
EDIT: Das Parsen von json, wo sowohl das Bild und andere Daten zu dem Array hinzugefügt wird, wie so gegeben ist
var theProduct = Product(name: name, id: id, theRate: rate, quantity: qty, sku: skuCode, prdCateg: prodCat, prodDescr: description)
if let images = anItem["product_images"] as? [[String:String]] {
for image in images {
guard let imageId = image["id"],
let url1 = image["image"],
let isDefault = image["is_default"] else {continue}
print(imageId)
let productImage = ProductImage(id: imageId, url: URL(string: url1)!, isDefault: isDefault == "1")
theProduct.add(image: productImage) //image is added here
self.productData1.append(theProduct)
let url = URL(string: url1)
let data = try? Data(contentsOf: url!)
self.arrayOfURLImages.append(UIImage(data: data!)!)
self.appDelegate.commonArrayForURLImages = self.arrayOfURLImages
EDIT 2:
Dies ist, wie ich bin Zuweisen der Bilder und anderer Daten in der Tabellenansichtszelle. Dies ist der Code von cellForRow .. (des Tableview aus, wo die Zellen geladen werden ..)
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: sellTableViewCell = tableView.dequeueReusableCell(withIdentifier: "sellProductIdentifier") as! sellTableViewCell
cell.prdImgView?.image = self.appDelegate.commonArrayForURLImages[indexPath.row]
let product = arrProduct?[indexPath.row]
cell.produvtNameLabel.text = product?.name
cell.rateTextField.text = product?.theRate
return cell
}
Haben Sie versucht, mit 'indexPath.item' statt' indexPath.row', wenn sie 'self.photoThumbnail' zuweisen? Zeilen befinden sich in Tabellenansichten, Auflistungsansichten arbeiten mit Elementen, da Sie mehr als eine Zelle in einer Zeile haben können, oder Sie haben möglicherweise keine klaren Zeilen. – Losiowaty
@ Losiowaty..das ist nicht das Problem ... – bws
Wo haben Sie Ihre 'add (image: ProductImage)' Methode aufgerufen –