Swift 3のコレクションビューに問題があります。Stackoverflowでいくつかのヒントを見つけて試してみましたが、無駄なことはありません。多くの人が 'prepareReuse'メソッドを使うと言いましたが、自分のコードでそれらを動作させることができませんでした。下にスクロールしてからもう一度バックアップした後、画像が変更されました。すべての画像はアルファベットの文字です。したがって、A、B、Cはビューの上部に表示される最初の画像です。下にスクロールしてバックアップすると、ランダムな他の文字が置かれています。私はこの問題を解決するために、コードのいくつかの小さなビットをしないのです願っていますcollectionViewでスクロールした後に間違った画像が読み込まれました3
import UIKit
class colViewController2: UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource {
var imageData: [String] = [String]()
var imageCounter: Int = 0
var userHasHieroglyph: NSArray = ["","","C","D","E","F","G","H","I","J","K","L","M","N","O","","Q","R","S","T","U","V","W","X","Y","Z"]
override func viewDidLoad() {
super.viewDidLoad()
imageData = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
for b in imageData {
if userHasHieroglyph.contains(b) {
let newHieroglyph = b.lowercased()
imageData[imageData.index(of: b)!] = "h-"+newHieroglyph
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellid", for: indexPath) as! MyImageCell
cell.backgroundColor = UIColor.white
var currImage:String = ""
currImage = self.imageData[self.imageCounter]
self.imageCounter += 1
if self.imageCounter >= self.imageData.count {
self.imageCounter = 0
}
cell.image.image = UIImage(named: currImage)
return cell
}
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 26
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 90, height: 90)
}
}
が、多くのStackOverflowの上で検索する時間、およびインターネットの後、私はまだ解決策を見つけることができません。次のように私の全体のコードがありますこの問題。誰かが解決策やヒントを持っていれば、それは非常に感謝しています!
挨拶
にメモを行うことができます:あなたは 'userHasHieroglyphを使用する理由:numberOfItemsInSection'あなたは' self.imageData.count' – muescha
ノートを返す必要があります 'に:NSArray'だけでなく、 '[String]' – muescha
注:これは常にあなたのコード内では白であるので、 'cell.backgroundColor = UIColor.white'をMyImageCellのinitに入れてください。 – muescha