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
}
}
これを引き起こす原因は何も表示されません。これはgithubにありますか? –
mainEventsCellまたはimportantEventsCellのスクロールがクラッシュしていますか? – user3608500
いいえ、importantEventsCellは、これらのcollectionViewsがtableViewのヘッダーにありますが、dataSourceとViewControllerに委譲することを追加する必要があります – JuicyFruit