我想在单击单元格时更改集合视图单元格的图像

问题描述

这是我选择的商品代码

func collectionView(_ collectionView: UICollectionView,didSelectItemAt indexPath: IndexPath) {
    playAudioFile(sound: dArray[indexPath.row].sound)
        
    dArray[indexPath.row].image = UIImage(#imageLiteral(resourceName: "backicon"))
    collectionView.reloadData()
}

这是我从中获取数据的数组:

struct Data {
    let tittle : String
    var image : UIImage
    let sound : String
}

var dArray : [Data] = [
    Data (tittle: "Artboard",image:#imageLiteral(resourceName: "Artboard 1 copy 8"),sound:"nice"),Data (tittle: "Baby Laugh",image:#imageLiteral(resourceName: "babylaugh"),Data (tittle: "Bike Horn",image:#imageLiteral(resourceName: "bikehorn"),sound:"test"),Data (tittle: "Bomb",image:#imageLiteral(resourceName: "bomb"),Data (tittle: "Bonus",image:#imageLiteral(resourceName: "bonus"),Data (tittle: "Bottle",image:#imageLiteral(resourceName: "bottle"),Data (tittle: "Bounce",image:#imageLiteral(resourceName: "bounce"),Data (tittle: "Break",image:#imageLiteral(resourceName: "brake"),Data (tittle: "broken Glass",image:#imageLiteral(resourceName: "brokenglas"),Data (tittle: "Bubbles",image:#imageLiteral(resourceName: "bubbles"),Data (tittle: "Bugle",image:#imageLiteral(resourceName: "bugle"),Data (tittle: "Buzzing Tone",image:#imageLiteral(resourceName: "buzzzingtone"),Data (tittle: "Car Horn",image:#imageLiteral(resourceName: "carhorn"),sound:"car_horn"),Data (tittle: "Car Racing",image:#imageLiteral(resourceName: "carracing"),sound:"racing_f1_passing"),Data (tittle: "Car Start",image:#imageLiteral(resourceName: "carstart"),sound:"car_start"),Data (tittle: "Cash Register",image:#imageLiteral(resourceName: "cashregister"),sound:"cash_register"),Data (tittle: "Choo Train",image:#imageLiteral(resourceName: "chootrain"),sound:"choo_choo"),Data (tittle: "Coin Drop",image:#imageLiteral(resourceName: "coindrop"),sound:"coin_drop_sound"),Data (tittle: "Communication",image:#imageLiteral(resourceName: "communication"),sound:"communicator"),Data (tittle: "Computer Tone",image:#imageLiteral(resourceName: "computertone"),sound:"computer_error"),Data (tittle: "Crowd",image:#imageLiteral(resourceName: "crowd"),sound:"crowd_cheer"),Data (tittle: "Cuckoo",image:#imageLiteral(resourceName: "cuckoo"),sound:"cuckoo"),Data (tittle: "Cuckoo Clock",image:#imageLiteral(resourceName: "cuckooclock"),sound:"cuckoo_clock"),Data (tittle: "discovery",image:#imageLiteral(resourceName: "discovery"),sound:"discovery"),Data (tittle: "displeasure",image:#imageLiteral(resourceName: "displeasure"),Data (tittle: "Doorbell",image:#imageLiteral(resourceName: "doorbell"),sound:"door_bell"),Data (tittle: "dopppler Tone",image:#imageLiteral(resourceName: "dopplertone"),sound:"car_alarm"),Data (tittle: "Drum",image:#imageLiteral(resourceName: "drum"),sound:"drums"),Data (tittle: "Elephent",image:#imageLiteral(resourceName: "elephant"),sound:"elephant"),Data (tittle: "Emergency",image:#imageLiteral(resourceName: "emergency"),sound:"emergency_alarm"),Data (tittle: "Engine",image:#imageLiteral(resourceName: "engine"),sound:"engine_car_start"),Data (tittle: "Error",image:#imageLiteral(resourceName: "error"),sound:"error"),Data (tittle: "Explosive",image:#imageLiteral(resourceName: "explosive"),sound:"explosive_beats_text"),Data (tittle: "Female Scream",image:#imageLiteral(resourceName: "femalescream"),sound:"screaming_girl"),Data (tittle: "Flush",image:#imageLiteral(resourceName: "flush"),sound:"flush_from_toilet"),Data (tittle: "Gong",image:#imageLiteral(resourceName: "gong"),sound:"gong"),Data (tittle: "Gun",image:#imageLiteral(resourceName: "gun"),sound:"shot"),Data (tittle: "Gun Silencer",image:#imageLiteral(resourceName: "gunsilencer"),sound:"gun_silencer"),Data (tittle: "Gym Whistle",image:#imageLiteral(resourceName: "gymwhistle"),sound:"whistle"),Data (tittle: "Horse",image:#imageLiteral(resourceName: "horse"),sound:"horse_sound"),Data (tittle: "Hunting",image:#imageLiteral(resourceName: "hunting"),sound:"gun_reloaded"),Data (tittle: "Instant Chat",image:#imageLiteral(resourceName: "instantchat"),sound:"message_tone"),Data (tittle: "Jungle",image:#imageLiteral(resourceName: "jungle"),sound:"jungle_sound (1)"),Data (tittle: "Karate",image:#imageLiteral(resourceName: "karate"),sound:"karate_scream"),Data (tittle: "Kisses",image:#imageLiteral(resourceName: "kises"),sound:"kissing"),Data (tittle: "Klaxon",image:#imageLiteral(resourceName: "klaxon"),sound:"klaxon"),Data (tittle: "Knock Door",image:#imageLiteral(resourceName: "knockeddoor"),sound:"knock"),Data (tittle: "Load Gun",image:#imageLiteral(resourceName: "loadgun"),sound:"gun_load"),Data (tittle: "Rewind",image:#imageLiteral(resourceName: "rewind"),sound:"rewinding"),Data (tittle: "Warning",image:#imageLiteral(resourceName: "warning"),sound:"warning_alert_msg"),]

解决方法

您可以在数据结构中添加变量

  struct Data {
    let tittle : String
    var image : UIImage
    let sound : String
    var isSelected : Bool
  }

并将 didSelect 代码更改为此

    func collectionView(_ collectionView: UICollectionView,didSelectItemAt indexPath: IndexPath) {
        playAudioFile(sound: dArray[indexPath.row].sound)
            //This condition is to select only one collectionView item at a time.
        if dArray[indexPath.row].isSelected {
dArray[indexPath.row]. isSelected = false
} else {
dArray[indexPath.row]. isSelected = true
}
        collectionView.reloadData()
    }

并在您的 cellForItem 函数中添加此代码

if dArray[indexPath.row].isSelected {
        dArray[indexPath.row].image = UIImage(#imageLiteral(resourceName: "backicon"))
}

我认为这有帮助。谢谢。