2016-05-21 13 views
-1

Meine Situation: Ich möchte Abschnitt in Daten aus einem Array bei Index X in einer Reihe auf Index X speichern 1.Swift TableViewCell Array

Mein Code ist:

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

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

override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
    return "Section \(section)" 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cellEmpty = tableView.dequeueReusableCellWithIdentifier("LabelCell") 
    var countCell = 0 


    while countCell < setObjectToPass.count { 
     let indexPaths = NSIndexPath(forRow: countCell, inSection: 0) 
     let cell = tableView.dequeueReusableCellWithIdentifier("LabelCell", forIndexPath: indexPaths) 

     cell.textLabel!.text = String(setObjectToPass[countCell]) 
     print(cell) 
     countCell+=1 
     return cell 
    } 

Mein Problem, dass nur der erste Index des Arrays SetObjectToPass wird in die Cell.text

while counter < fetchResult?.count { 

    let set = fetchResult![counter] 
    counter+=1; 
    setObject.append((set.reps?.integerValue)!) 
} 
+1

Ich empfehle die grundlegende Implementierung eines 'UITableViewDataSource' forschen. Was Sie in der 'cellForRowAtIndexPath (_ :)' Methode machen, ist sehr seltsam. –

+0

Okay danke, ich gebe es eine Chance, noch irgendwelche Vorschläge? –

+0

Was sind die SetObjectToPass-Array-Werte? –

Antwort

0

nicht die Schleife in cellForRowAtIndexPath Delegatmethode Verwendung zugeführt und eingestellt. cellForRowAtIndexPath Methodenaufruf jede Zeile basierend auf numberOfRowsInSection Anzahl Zeilen, einfach indexpath.row verwenden, diesen Code verwenden,

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cellEmpty = tableView.dequeueReusableCellWithIdentifier("LabelCell") 

    let cell = tableView.dequeueReusableCellWithIdentifier("LabelCell", forIndexPath: indexPaths) 

    cell.textLabel!.text = setObjectToPass[indexPath.row] as? String 

    return cell 
} 

hoffen, seine hilfreich

+0

Werte habe ich 'String (setObjectToPass [indexPath.row])' das Label Text speichern Da es nicht JETZT Int String ** ARBEITS werfen kann! ** –

1

Sie implementieren die tableView(_:cellForRowAtIndexPath:indexPath:) Methode falsch.

Denken Sie daran, jede Delegiertenmethode in UITableViewDelegate ist, als ob Sie eine Frage stellen. Zum Beispiel, numberOfSectionsInTableView(_:) ist wie fragen Sie "Wie viele Abschnitte möchten Sie in Ihrer Tabellenansicht?". Sie beantworten die Frage, indem Sie einen Wert zurückgeben.

tableView(_:cellForRowAtIndexPath:indexPath:) ist ähnlich. Es stellt auch eine Frage. Es fragt "Was soll ich in der Tabellenzeile auf diesem Indexpfad anzeigen?"

In Ihrem Code scheint es, als ob Sie mehrere Antworten geben möchten - das Array durchlaufen und mehrmals versuchen zurückzukehren. Aber so funktioniert das nicht, du kannst nur eine Antwort geben.

In der ersten Iteration der while-Schleife wird die Ausführung return erreicht und gestoppt. Deshalb sehen Sie nur die erste Tabellenzelle.

Daher sollten Sie Ihren Code ändern, so dass es nur eine Antwort auf die Frage gibt:

let cell = tableView.dequeueReusableCellWithIdentifier("LabalCell") 
cell.textLabel?.text = String(setObjectsToPass[indexPath.row]) 
return cell 
+0

Ich erhalte eine „Use von nicht aufgelösten Bezeichnern "für setObjectToPass. Erklärung ist hier: 'Klasse TableViewControllerResult: UITableViewController { // Fetch Variable von anderen Viewcontroller var counterToPass: Int! var counterSetToPass: Int! var setObjectToPass: [Int]! Überschreibung func viewDidLoad() { super.viewDidLoad() print (counterToPass) } ' –

+0

Ups! Ich meinte eigentlich 'setObjectToPass' @HendrikBreezy – Sweeper

+0

In Kombination mit dem anderen Kommentar funktioniert es, tyvm! –