2016-05-02 7 views
0

Ich habe zwei Arrays.Loop-Array-Daten Zeilen für Zeilen in der Tabelle

var TableData:Array<String> = Array <String>() var TableSpeed:Array<String> = Array <String>()

Jede Array Name, Titel, Adresse und Alter sind beteiligt.
Ich möchte diese vier Daten Zeile für Zeile anzeigen.
Mein aktuelles Problem ist, dass jedes Daten in jeder Zeile erscheint.
"Name" wird in der ersten Zeile angezeigt.
"Titel" Daten werden in der zweiten Zeile angezeigt.

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

    let packCellToReturn = tableView.dequeueReusableCellWithIdentifier("packCell", forIndexPath: indexPath) as! PackTableViewCell 

    switch (packSegmentedControl.selectedSegmentIndex) 
    { 
    case 0: 
     packCellToReturn.lblName.text = TableData[indexPath.row] 
     packCellToReturn.lblTitle.text = TableData[indexPath.row] 
     packCellToReturn.lblAddress.text = TableData[indexPath.row] 
     packCellToReturn.lblAge.text = TableData[indexPath.row] 

     break 
    case 1: 
     packCellToReturn.lblName.text = TableSpeed[indexPath.row] 
     packCellToReturn.lblTitle.text = TableSpeed[indexPath.row] 
     packCellToReturn.lblAddress.text = TableSpeed[indexPath.row] 
     packCellToReturn.lblAge.text = TableSpeed[indexPath.row] 
     break 
    default: 
     break 

    } 

    return packCellToReturn 


} 
+0

1: Bitte verwenden Sie einfach 'var TableData = [String]()' anstelle von 'var TableData: Array < String > = Array < String >()' 2: Bitte verwenden Sie Camel Case Variablennamen: 'tableData' 3: Sie erkennen das Ihr Code weist allen 4 Labels immer den *** gleichen *** Wert zu !? 4: Teilen Sie die Daten nicht auf mehrere Arrays auf, erstellen Sie eine Struktur oder Klasse, die alle Werte von * einem * Objekt zusammenhält! Was genau wollen Sie erreichen und was genau passiert stattdessen? – luk2302

Antwort

0

Ich bin nicht genau sicher, was Sie erreichen möchten, aber ich denke, dass Sie Ihre Datenstruktur überdenken müssen.

Im Moment greifen Sie mit diesem Code auf das gesamte Array zu, was bedeutet, dass die .lblName -Eigenschaft sowie die anderen drei alle auf das gesamte Array festgelegt sind.

packCellToReturn.lblName.text = TableData[indexPath.row] 

Ich würde versuchen, es so Umsetzung:

struct TableData { 

var name 
var title 
var address 
var age 

/* 
Here you can either set up a memberwise initializer as I did below, or set default values for each variable above. 
init(String: name, String: title, String: address, Int: age) { 
self.name = name 
self.title = title 
self.address = address 
self.age = age 
*/ 
} 

//Creating an array of TableData elements. 
var tableData = [TableData] 

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

let packCellToReturn = tableView.dequeueReusableCellWithIdentifier("packCell", forIndexPath: indexPath) as! PackTableViewCell 

switch (packSegmentedControl.selectedSegmentIndex) 
{ 
case 0: 
    packCellToReturn.lblName.text = tableData[indexPath.row].name 
    packCellToReturn.lblTitle.text = tableData[indexPath.row].title 
    packCellToReturn.lblAddress.text = tableData[indexPath.row].address 
    packCellToReturn.lblAge.text = tableData[indexPath.row].age 

    break 

Und dann das Gleiche tun, was mit der Struktur etc. für die Tischgeschwindigkeit Struktur zu schaffen und eine Tischgeschwindigkeit Reihe von Tischgeschwindigkeit structs und implementieren sie in ähnlicher Weise in die Funktion TableView.

Verwandte Themen