2017-08-23 11 views
0

2つのUICollectionViewsを持つView Controllerがあり、以下のコードが動作し、シミュレータですべてが正しく表示されます。しかし、2番目のUICollectionViewをスクロールしようとすると、シミュレータが失敗し、致命的なエラーが表示されます。インデックスが範囲外です。インデックスが範囲外です+不正な指示

cell.ImageView.image = UIImage(named: Popu[indexPath.row]) 



import UIKit 

class MainScreen: UIViewController, UICollectionViewDelegate, 
UICollectionViewDataSource { 

@IBOutlet weak var TopCollectionView: UICollectionView! 
@IBOutlet weak var BottmView: UICollectionView! 

var theList = ["Stanford", "Cal", "Alabama", "USC"] 

var Popu = ["Football", "Basketball", "Baseball", "Hockey"] 


override func viewDidLoad() { 
    super.viewDidLoad() 

    TopCollectionView.dataSource = self 
    TopCollectionView.delegate = self 

    BottmView.dataSource = self 
    BottmView.delegate = self 


    let availableWidth = view.bounds.width - 8 - 4 
    let itemSize = availableWidth/2 

    let layout = UICollectionViewFlowLayout() 
    layout.sectionInset = UIEdgeInsets(top: 6, left: 4, bottom: 6, right: 4) 
    layout.minimumInteritemSpacing = 4 
    layout.minimumLineSpacing = 4 
    layout.itemSize = CGSize(width: itemSize , height: itemSize) 

    BottmView.collectionViewLayout = layout 


    // Do any additional setup after loading the view. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func numberOfSections(in collectionView: UICollectionView) -> Int { 
    return 1 
} 



func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

    return theList.count 

} 

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

    if collectionView==self.TopCollectionView { 

    let cell:TopImages = collectionView.dequeueReusableCell(withReuseIdentifier: "CustomCell", for: indexPath) as! TopImages 

    cell.myImage.image = UIImage(named: theList[indexPath.row]) 

    return cell 

} 
else 
    { 
    let cell:PopCell = collectionView.dequeueReusableCell(withReuseIdentifier: "PopUCell", for: indexPath) as! PopCell 

    cell.ImageView.image = UIImage(named: Popu[indexPath.row]) 
    return cell 
    } 
} 

} 
+0

これはすべてのコードにすることはできません。 – ryantxr

+0

@ryantxrどういう意味ですか?私はこのコードとCollection Cellのための2つのサブクラスを持っています。このコードは実行されますが、BottmViewをスクロールしようとするとクラッシュします。 –

+0

私は今それを見る。私はそれがスクロールしたことを逃した。 – ryantxr

答えて

0

あなたはカウントが戻ってきているが、あなたはのコレクションを持っている:それは悪い命令として、このコード行を示しています。

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    if collectionView==self.TopCollectionView { 
     return theList.count 
    } else { 
     return Popu.count 
    } 
} 
+0

あなたのコードを入れて、両方のコレクションが消えた笑 –

+0

おっと、nvm! LOLありがとうございました! –

関連する問題