简体   繁体   中英

UIcollectionview list of horizontal toggle button in Swift

I would like to create a list of horizontal buttons in UIcollectionview. Only one and only button can be selected and it will change to red color, problem is the selected cell will be reuse then there is possibility two red buttons appear in a same time, what should I do to solve this?

Store the index of the selected row in didSelectRow , then inside cellForItemAt

var selectedIndex = -1
var urlArr = [url1,url2,url3,url4,url5]

//

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

   let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CellIdentifier1, for: indexPath as IndexPath) as! imagesCollectionViewCell
   let currentUrl = urlArr[indexPath.row]
   if(indexPath.row == selectedIndex)
  {
       // red
  }

  else
  {
      // default
  }
}

if you want to create multiple toggle cells in UICollectionView then use this.

var selectedIndexes = NSMutableArray()
var items = [item1,item2,item3,item4,item5]

in cellForItemAt method. check for selected indexPath.row

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

   let cell = collectionView.dequeueReusableCell(withReuseIdentifier: yourIdentifier, for: indexPath as IndexPath) as! yourCell

  if selectedIndexes.contains(indexPath.row){
     // make it active
  }else{
      // make it default
  }
}

And in didSelectItemAt method add and remove indexPath from the Array to toggle the button of cell

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

  if selectedIndexes.contains(indexPath.row){
     selectedIndexes.add(indexPath.row)
  }else{
     selectedIndexes.remove(indexPath.row)
  }

    collectionView.reloadData()
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM