मैंने एक कस्टम मेनू बार बनाया है और अब मैं नेविगेशन के लिए एक स्लाइडर लागू करना चाहता हूं। मैंने पहली छवि को चयनित इटैम के रूप में रंग के साथ सेट किया है। सफेद और अन्य छवियों के साथ .ग्रे .. अब मैं अन्य छवियों पर क्लिक करना चाहता हूं और इसके .tintColor को बदलना चाहता हूं।

let imageView: UIImageView = {

return imageView
    }()

    override var isSelected: Bool {
        didSet {
            imageView.tintColor = isSelected ? .white : .gray
        }
    }

    override var isHighlighted: Bool {
        didSet {
            imageView.tintColor = isHighlighted ? .white : .white
        }
    }



}

मैं अन्य छवियों पर क्लिक करने और टिंटकोलर को बदलने में सक्षम होना चाहिए, जबकि यह दूसरी छवि को अचयनित करता है।

0
user11080824 21 मई 2019, 16:09

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि collectionView's cellForItemAt विधि collectionViewCell's isSelected में कुछ विसंगति है।

  1. cellForItemAt में, आप cell.tintColor = .white सेट कर रहे हैं

  2. isSelected में, आप imageView.tintColor = isSelected ? .white : .gray सेट कर रहे हैं

कोड को cellForItemAt में बदलने का प्रयास करें,

cell.imageView.tintColor = .gray

मैंने एक नमूना कोड बनाया है ताकि आप समस्या की पहचान कर सकें,

class ViewController: UIViewController, UICollectionViewDataSource {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 10
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CustomCell
        cell.imageView.tintColor = .gray
        return cell
    }
}

class CustomCell: UICollectionViewCell {
    @IBOutlet weak var imageView: UIImageView!

    override var isSelected: Bool {
        didSet {
            self.imageView.tintColor = isSelected ? .white : .gray
        }
    }
}

enter image description here

0
PGDev 21 मई 2019, 13:41