2016-10-06 6 views
0

私が宣言UICollectionViewControllerメインビュー・コントローラを有する:通過セルインデックスのViewController

var cellIndex: Int = 0 

は、私は

cellIndex = indexPath.item+1 

次いでdidSelectItemAtIndexPath方法において、この変数に値を代入するI prepareForSegueメソッドを介して2番目のビューコントローラに送信する

destination.cellIndexToUse = self.cellIndex 
私の第2のビューコントローラ内

に(すなわち、宛先である)私は

var cellIndexToUse: Int = 0 

を宣言した後のviewDidLoadでIは画像の正しい配列の値がされたものを細胞に応じて表示する空の配列を割り当て関数を呼び出しますタップ、この機能は...

func assignArrays() { 
if cellIndexToUse == 0 {objectsImages = imagesA} 
if cellIndexToUse == 1 
{objectImages = imagesB} 
if cellIndexToUse == 2 
{objectImages = imagesC} 
if cellIndexToUse == 3 
{objectImages = imagesD} 

私の問題があるさ: 私はセルをクリックすると、すべての画像が正しく表示されているが、私は二度目のすべてのセルをクリックした場合、その後、最初のセルがノーを示し画像、残りの部分は完全にOKです。

答えて

0

おそらく関数を早く呼び出すことがあります。 viewDidLoadは、cellIndexToUseの割り当ての前に発生します。

代わりにviewWillAppearに画像を設定してみてください。

+0

を...したがって、私はindexPathを取得する間違いをしています...それを行う方法をもっと勉強しなければならないかもしれません。 – user6930957

+0

多分私はこの行で間違いを犯しています: "cellIndex = indexPath.item" – user6930957

+0

はい、考えられる原因のようです。私は他のメカニックが期待どおりに動くと仮定しました。さらに、この方法でインデックスパスを扱うのは良い考えではありませんが、それは別の問題です。 – Mundi

0

私は私の問題を解決し、それは完全に正常に動作します。

私は全くdidSelectItemAtIndexPathを必要としなかったので、私はそれを削除したが、私はprepareForSegue方法訂正:私は、誰かがそれを必要とする場合には、ここで答えを書きます、それは助けにはならなかった

if (segue.identified == "mySegueIdentifier") { 
    let destination = segue.destinationViewController as! MyNextViewController 
    destination.cellIndexToUse = (myCollectionView.indexPathsForSelectedItems()?.first?.item)!} 
関連する問題