2016-10-10 3 views
2

Ich habe ein Array und eine Prüffunktion. wennArray außerhalb des Bereichs mit Prüffunktion

Funktion auf Taste angezapft:

// VARS 
var workoutArray: [workout]! 
var index = Int() 

@IBAction func finishExerciseBtnPressed(_ sender: AnyObject) { 

    // reload tabledata with next exercise in array 

    print("the count of array is \(workoutArray.count)") 

    if index <= workoutArray.count { 
     index = index + 1 
     tableView.reloadData() 
     print("The exercise number is \(index)") 
    } else { 
     // Show finish workout button 
     print("No items found anymore") 
    } 
} 

Funktion von tableViewdequeReusableCell:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    if let cell = tableView.dequeueReusableCell(withIdentifier: "workoutStartCell", for: indexPath) as? workoutStartCell { 

     let workout = workoutArray[index] 
     cell.updateUI(workout: workout, exercise: index + 1) 

     return cell 

    }else{ 
     return UITableViewCell() 
    } 
} 

ich von einer früheren viewcontroller die Zahl 0 in dem Index var auf der Oberseite dieses vc schickte. Ich habe die Prüfmethode finishExercisePressed, aber was immer ich tue, es zählt weiter. Es sagt Index außerhalb des Bereichs, aber ich überprüfe, ob der Index gleich oder niedriger als die Anzahl der Arrays ist.

Dies ist das, was ich erreichen möchte:

enter image description here

jemand mir bitte helfen kann?

Vielen Dank.

+0

Vermeiden Sie leere Zellen zurückgeben –

+0

Was steht 'index'? Ist dies die Nummer des aktuellen Trainings? – dasblinkenlight

+0

Der Index repräsentiert: - Die Anzahl der Sätze in diesem aktuellen Training. Ich werde den Namen ändern, weil es keine gute Benennung ist –

Antwort

0

Ich überprüfe, ob der Index gleich oder niedriger als die Anzahl der Arrays ist.

Das stimmt. Aber tun Sie es, bevor Sie den Index erhöht wird, und da die Indizierung bei Null beginnt, sollten Sie einen Index vor dem Ende stoppen:

var index = 1 // Set the index to 1 initially to skip the title 
... 
if index+1 < workoutArray.count { 
    index += 1 
    tableView.reloadData() 
    ... 
} 

Die obige Prüfung verifiziert, dass index in Bereich nach wird erhöht bleiben würde.

+0

Das Problem ist, dass ich meine Ergebnisse in einem TableView zeige. Aber der Titel sollte mit 1,2,3 usw. beginnen. –

+0

tahts warum ich in der Tabellenansicht inkrementiere –

+0

Ich habe ein Bild für dich hinzugefügt –

Verwandte Themen