2016-09-27 18 views
0

私のコレクションビューの1つをスクロールしているときに奇妙な問題が発生しています。私が印刷しているときindexPath.rowは0..6からOKになりますが、最後にindexPath.rowは3です。それから私はそれをスクロールするとexcbadadressでクラッシュするか、1、2、4をランダムに印刷します。私は自分のコードに誤りがあり、実際にはどこにあるのか分からないと思います。 VC: はここに私のコードですUICollectionView indexPath.rowの異常な動作

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize { 
    if collectionView == mainEventsCollectionView { 
     return CGSize(width: UIScreen.main.bounds.width - 40, height: 180) 
    } else { 
     return CGSize(width: 150, height: 200) 
    } 
} 

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    if collectionView == mainEventsCollectionView { 
     return 3 
    } else { 
     return 7 
    } 
} 

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    if collectionView == mainEventsCollectionView { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "mainEventsCell", for: indexPath) as! MainEventCollectionViewCell 
     cell.eventTitle.text = "Hello world".uppercased() 
     cell.setupCell() 
     return cell 
    } else { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "importantEventsCell", for: indexPath) as! ImportantEventsCollectionViewCell 
     print(indexPath.row) 
     cell.setupCell() 
     return cell 
    } 
} 

セル:

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    self.roundCorners(.allCorners, radius: 6, borderColor: .clear, borderWidth: 0) 
} 

func setupCell() { 
    self.content.backgroundColor = colorWithAlpha(.black, alpha: 0.7) 
    self.eventDate.textColor = .white 
    self.eventTime.textColor = .white 
    self.eventName.textColor = .white 
    if self.content.layer.sublayers!.count > 3 { 
     self.content.layer.sublayers!.removeLast() 
    } 
    if self.eventDate.text == "Today" { 
     self.content.backgroundColor = .clear 
     DispatchQueue.main.async(execute: { 
      self.content.drawGradient(colors: [UIColor(red: 250/255, green: 217/255, blue: 97/255, alpha: 0.7).cgColor, UIColor(red: 255/255, green: 135/255, blue: 67/255, alpha: 0.7).cgColor], locations: [0, 1]) 
     }) 
     self.eventDate.textColor = .black 
     self.eventTime.textColor = .black 
     self.eventName.textColor = .black 
    } 
} 
+0

これを引き起こす原因は何も表示されません。これはgithubにありますか? –

+0

mainEventsCellまたはimportantEventsCellのスクロールがクラッシュしていますか? – user3608500

+0

いいえ、importantEventsCellは、これらのcollectionViewsがtableViewのヘッダーにありますが、dataSourceとViewControllerに委譲することを追加する必要があります – JuicyFruit

答えて

0

[OK]を、問題は私が要素を持っていたUIView、(UILables)にグラデーションを適用しようとしたということでした。私がしなければならなかったのは、サブビューをUIViewに追加し、グラデーションを適用することです。

関連する問題