2016-10-10 4 views
2

配列とチェック機能があります。配列がチェック機能付きで範囲外です

ファンクションボタンをタップすると:tableViewdequeReusableCell

// 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") 
    } 
} 

機能:

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() 
    } 
} 

を、私はこのVCの上にインデックスVAR、前viewcontroller数0から送信しています。私はチェックメソッドfinishExercisePressedを持っていますが、私が行っていることは何でもトラフを数え続けます。範囲外のインデックスですが、インデックスが配列の数と等しいかそれよりも小さいかどうかを確認しています。

これは私が達成したいものです。

enter image description here

誰かが私をしてください助けることはできますか?

ありがとう。

+0

空のセルが返されないようにする –

+0

'index'は何を表していますか?これは現在のワークアウトの番号ですか? – dasblinkenlight

+0

このインデックスは以下を表します: - 現在のワークアウトのセット数。私はその名前が良い名前ではない原因を変更します –

答えて

0

インデックスが配列の数と等しいかそれよりも小さいかどうかを確認しています。

そうです。ただし、インデックスをインクリメントする前にそれをやっている、とインデックスはゼロから始まり以来、あなたは、終了前に一つのインデックスを停止する必要があります:

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

上記のチェックはindexががインクリメントされた後の範囲にとどまることを確認します。

+0

問題は、私は結果をtableViewに表示しているということです。しかし、タイトルは1,2,3などで始まる必要があります –

+0

なぜ私はテーブルビューでインクリメントしています –

+0

私はあなたのために画像を追加しました –

関連する問題