2017-01-11 21 views
1

私はindexPathは変更できませんか?スウィフト

selectedPrevious = mons[indexPath -= 1] 

を使用して、私のindexPathをインクリメントしようとしている。しかし、私はindexPathを示すエラーが一定せている取得します。しかし、それを変数に変更する方法はないようです。私が作成してのInt変数とそう

index = indexPath.row -= 1 
selectedPrevious = mons[index] 

のようにインデックスに割り当ててみました。しかし、今、+=または-=を使用しようとすると、新しいエラーを与えてきました。

タイプのインデックスを持つ「[モンスター]」「()」型の値を添字ことはできません

どのように私はこれをインクリメントすることができます。意図した目的は、私の2番目のViewcontrollerのデータをリロードすることです。 index変数を単独で渡しても、データのリロードには影響しません。

+4

を変更しない場合は、インデックス= indexPath.rowてみましょう 'したい - 1'、または単に 'selectedPrevious =モンス[indexPathを。 [1行目] –

+0

問題は、これを呼び出してデータをリロードしたときに1回しか呼び出されないため、増分しようとした理由です。 – baxu

+0

indexpath.rowをインクリメントしたい場合は、indexpath.rowではなくnumberofrowメソッドで返す行の数を増やしてください。 – Hosny

答えて

3

パラメータ(引数)はデフォルトでletになります。つまり、関数に渡されるパラメータの値を読むことはできますが、変更することはできません。

そして、これはすべての変数に適用されていないだけでindexPath :)

ので

あなたがindexPathの値を変更したい場合は、ここで何ができるかです:)

:)間違っていた何をしていましたか
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "myCell", for: indexPath) 
     var copiedIndexPath = indexPath 
     copiedIndexPath.row = copiedIndexPath.row + 1 
} 

あなたは私がインデックスパスのローカルコピーを作成し、その値を修正見ることができるように:)

EDIT:

声明

indexPath.row -= 1 

ないだけでindexPathの行を差し引きますが、また戻って、デフォルトで聞かせているindexPathにデータを代入しようとします。 indexPathの値自体を本当に変更したい場合は、上記のことを行うことができます。

あなたの意図は、行インデックスを計算するだけだったとindexPathのIT自己

index = indexPath.row - 1 
関連する問題