2016-04-04 6 views
0

My self.totalPriceLabel Show Gesamtpreis aller Shop arbeitet Product.It in Ordnung, aber wenn ich scrollen ist die cell die abgehen Bildschirm aufgrund dequeueReusableCellWithIdentifierself.totalPriceLabel falsche value.i bekommt Wert in Array speichere die in NSUserDefaults gespeichert ist.Wie man Einkaufswagen in UITableView mit dequeueReusableCellWithIdentifier in swift verwaltet?

enter image description here

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     var cell : CartCell? = tableView.dequeueReusableCellWithIdentifier("cartCell") as! CartCell! 
     if(cell == nil) 
     { 
      cell = CartCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cartCell") 
     } 

     cell?.itemCount.layer.cornerRadius = 5 
     cell?.clipsToBounds = true 

     cell?.itemCount.layer.borderWidth = 1 
     cell?.itemCount.layer.borderColor = UIColor.blackColor().CGColor 
     cell?.itemMinus.tag = indexPath.row 
     cell?.itemPlus.tag = indexPath.row 
     cell?.itemDelete.tag = indexPath.row 

     let key = self.readArray[indexPath.row] 

     cell?.itemCount.text = String("\(key.allValues[0])") 
     let tupleVar = getProductNameFromCharacter(String("\(key.allKeys[0])")) 
     cell?.itemName.text = tupleVar.tempName 
     cell?.itemPrice.text = String("\(tupleVar.price)") 

     //Actual Logic 
     let tempCount = key.allValues[0] as! Double 
     let nextItemPrice = (cell!.itemPrice.text! as NSString).doubleValue * tempCount 
     self.totalPriceLabel.text = String("\((self.totalPriceLabel.text! as NSString).doubleValue + nextItemPrice)") 


     return cell! 

    } 

Problem: Wie Scroll cell values.for self.totalPriceLabel vertun.

self.totalPriceLabel.text = String ("((self.totalPriceLabel.text! Als NSString) .doubleValue + nextItemPrice)")

Wie cell Wert erhalten, die aus nur erlischt Bildschirm? Wie behebt man dieses Problem durch Scrollen?

+0

Ich fühle mich falsch Ansatz zu verwalten "totalPriceLabel", sollten Sie Ihre 'totalPrice' in einer Variablen und Sie müssen den Etikettentext aktualisieren, wenn Ihre Variable Wert aktualisiert wurde. – amorbytes

+0

@amorbytes. Ja, ich habe die Variable totalPriceLabel am unteren Rand der Ansicht des Viewcontrollers genommen. Sie befindet sich nicht in der Tabellenansicht –

Antwort

3

cellForRowAtIndexpath ist der falsche Ort für diese Berechnung. Sie gehen davon aus, dass iOS diese Funktion für jede Zelle einmal aufruft. Dies ist nicht der Fall. Diese Funktion wird aufgerufen, um eine einzelne Zelle anzuzeigen. Es könnte sehr gut mehrmals für dieselbe Zelle aufgerufen werden, wenn Sie nach oben und unten scrollen.

Sie sollten diese Summe aktualisieren, wenn Sie Elemente aus den zugrunde liegenden Daten hinzufügen oder entfernen (self.readArray).

Fügen Sie auch Code hinzu, um die Summe zu ändern, wenn Sie auf die Schaltfläche für die Menge tippen.

Wenn Sie genauere Hilfe benötigen, geben Sie den gesamten Controller ein.