私はどのセルがマークされていたのか保存されていないのかを悩ましています。いくつか試行した後、それはすべてindePath
を保存することに関するものであり、コレクションのビューに戻ると、indexPaths
collectionView
の方法のarray
の中のいくつかのものを行うことができます。基本的にそれはどのように見える:コレクションのセルが選択された後にチェックが外されないようにしました
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
switch collectionView {
case myCollection:
var count: Int = 0
if !SessionMenager.Instance.indexPaths.isEmpty {
for index in SessionMenager.Instance.indexPaths {
if index == indexPath {
print(SessionMenager.Instance.indexPaths.count)
myCollection.selectItem(at: SessionMenager.Instance.indexPaths[count], animated: true, scrollPosition: .bottom)
var image = cell.viewWithTag(1) as! UIImageView
UIView.animate(withDuration: 0.25, animations: {
image.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
image = image.drawRingForCircle(imageView: image, color: .white)
})
cell.isSelected = true
count += 1
}
}
}
default:
break
}
}
これは完璧に動作しますが、片方だけです。今は別のview
に行く前に最初に選択したセルを除いて、選択したセルの選択を解除できません - それはなぜですか?誰も私を助けることができる?
ありがとうございます!
EDIT
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath {
switch collectionView {
case xxx:
break
case yyy:
break
case myCollection:
let image = myCollection.cellForItem(at: indexPath)?.viewWithTag(1) as! UIImageView
UIView.animate(withDuration: 0.25, animations: {
image.transform = CGAffineTransform(scaleX: 1, y: 1)
image.layer.sublayers?.removeLast()
})
for (key, _) in tmpDict {
if key == image {
if let index = self.choosenData.index(of: tmpDict[key]!) {
self.choosenData.remove(at: index)
SessionMenager.Instance.indexPaths = SessionMenager.Instance.indexPaths.filter { $0 != indexPath }
}
}
}
default:
break
}
}
どのように細胞の選択を解除しようとしていますか?あなたは選択部分を行うコードだけを掲載しました。 –
@PedroCastilho他のセルに対して 'didDeselectItemAt'メソッドを入力せず、最初のものを保存します。しかし、あなたは雇われています! – yerpy
なぜ 'switch'ステートメントですか? –