2016-03-27 9 views
0

Ich möchte alle Werte dieser Schleife in der Tabellenansicht anzeigen. Der Code soll eine Tilgungstabelle für Kredite berechnen. Ich habe versucht, die Daten der Schleife im Array zu speichern, aber es gibt mir immer die letzten Werte. Ich habe mich wirklich festgefahren. Wie kann ich das bitte tun? Dies ist mein Code:UITableView Letzten Wert einer Schleife anzeigen

import UIKit 

class tableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

@IBOutlet var tableView: UITableView! 

var arr = [Int]() 
var cell:tableCell! 
var TPayment: float_t! // calls value of 59600 from main controller 
var years1: float_t! // number of months = 180 (15 years) 
var monthlyPayment: float_t! // 471 
var interest: float_t! // 5% 
var principil: float_t! //222 
var interestrate: float_t! // 249 
var initil: float_t! 
var data = Array<float_t>() 
var data2: NSMutableArray = [] 

override func viewDidLoad() { 
    super.viewDidLoad() 
    tableView.delegate = self 

    tableView.dataSource = self 

    let c = Int(years1) 
    arr += 0...c 

    tableCalculation() 

     // Register custom cell 
     let nib = UINib(nibName: "table", bundle: nil) 
     tableView.registerNib(nib, forCellReuseIdentifier: "cell") 
} 

func tableCalculation() { 
    let years = Int(years1) 
    initil = TPayment - 0 

    for i in 0..<years { 
      initil = initil - principil 
      interest = initil * interestrate     
      principil = monthlyPayment - interest     
      print("Month : \(monthlyPayment), principil: \(principil),interest: \(interest), initi: \(initil)") 
      data = [interest] 
      self.data2 = [initil] 
    }   
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return arr.count 
} 

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

    cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! tableCell 
    cell.lbl1.text = "\(arr[indexPath.row])"   
    cell.lbl2.text = "\(monthlyPayment)" 
    cell.lbl3.text = "\(data[indexPath.row % data.count])" 
    cell.lbl4.text = "\(principal)" 
    cell.lbl5.text = "\(self.data2[indexPath.section])"   
    return cell   
}  

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    print("Row \(indexPath.row) selected") 
} 

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return 40 
} 
} 

Table View with UITableView

Table view with print()

+1

Post nur den Code, mit dem Sie Probleme haben. – lukaivicev

+0

Ich tat es vorher und kein Körper hat es verstanden, also hilft es den ganzen Code zu verstehen, um den ganzen Punkt meiner Frage zu verstehen. –

+1

Ich verstehe Ihre Frage nicht und es ist nicht nützlich für zukünftige Benutzer, die das gleiche Problem haben. Sie sind nicht genau über das Problem, das Sie haben. Nur der notwendige Code sollte gepostet werden und die mathematischen/codierenden Probleme, die Sie haben. Hoffentlich versteht jemand anderes, wenn nicht. http: // Stapelüberlauf.com/help/how-to-fragen @yousefalenezi – lukaivicev

Antwort

2

Das Hauptproblem ist, mit Ihren Daten-Array.

In der Schleife, wo Sie Ihr Datenfeld füllen, in tableCalculation, gibt es dies:

data = [interest] 

Es bedeutet, dass Sie für jede Iteration -[interest] das Datenfeld gesetzt statt anhängen das neue Element zu dem Array.

Was sollten Sie stattdessen tun:

data.append(interest) 

Beachten Sie, dass Sie den gleichen Fehler mit self.data2. Aber jetzt wissen Sie, wie Sie diese Art von Fehler beheben können.

+0

Thank you very much. es funktioniert jetzt –

0

Im cellForRowAtIndexPath Verfahren Sie die gleichen Daten zu drucken geben, die wie die Ausgabe aussieht

ich für alle Etiketten nicht viel, aber Sie können es auf der Voraussetzung basiert ändern

für lbl2 und lbl4 übergeben Sie eine einzelne float-Variable für alle Zeilen, deshalb zeigt es den gleichen Wert, wenn Sie den anderen Wert für jede Zeile anzeigen möchten, sollten Sie ihn im Array speichern und bei cellForRowAtIndexPath bekommen Sie es wie für lbl1

cell.lbl2.text = currencyFormatter(monthlyPayment) 
cell.lbl4.text = currencyFormatter(principil) 

für lbl5 Code Ihres Code Zelle wie diese

cell.lbl5.text = "\(self.data2[indexPath.row])" 

5 Für den LBL 3 & LBL sein sollte, wenn ich diesen Code mit statischem Wert ausführen, um Interesse es nur speichert einen Wert im Array

for i in 0..<years { 
    let interest = 5.0 * 4.0 
    data = [interest] 
} 
zu erhalten

jeden Wert, den Sie in dem Feld berechnet speichern Sie append

data.append(interest) 
self.data2.append(initil) 

, da es nur 1-Wert in der ist verwenden sollten Array für jeden Index-Pfad gibt 0-Wert im Array nach Ihrer Modulo-Operation, so dass es den gleichen Wert in jeder Zeile zeigt

+0

Vielen Dank auch Sie. es funktioniert jetzt –

+0

ich bin froh, dass hilft – HardikDG

Verwandte Themen