Swift коллекция просмотров - PullRequest
       6

Swift коллекция просмотров

0 голосов
/ 09 февраля 2019

Я получил коллекцию фотографий, как я могу ограничить количество фотографий, которые выбирают пользователи.Например, пользователи могут выбрать до 3 фотографий в режиме просмотра коллекции

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Вы можете добавить выбранные элементы в новый массив и проверить, чтобы число массивов не превышало 3 элементов.

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
     if alreadyAddedItemArray.count == 3 {
        // replace the selected indexPath item with last added item
        // or any logic you prefer
     }
     else {
       // append new item to alreadyAddedItemArray.
     }
}


0 голосов
/ 09 февраля 2019

Это проснулось для меня.Я построил два метода: один для handleMultipleCellSelection, чтобы проверить максимальное выбранное количество элементов, а другой для handleCellSelection.

Этот метод handleMultipleCellSelection вызывается в didSelectItemAt из UICollectionViewDelegate

var selectedServicesId = NSMutableArray()

  func handleMultipleCellSelection(_ cell: UICollectionViewCell, indexPath: IndexPath){
        if self.selectedServicesId.count < 3 {
            self.handleCellSelection(cell, indexPath: indexPath)
        }else{
            if  self.selectedServicesId.contains(servicesData!.data[indexPath.row].id){
                handleCellSelection(cell, indexPath: indexPath)
            }else{

                let alert = UIAlertController(title: "Attention", message: "You can not select more than three items", preferredStyle: .alert)
                alert.addAction(UIAlertAction(title: "Ok", style: .destructive, handler: nil))
                self.present(alert, animated: true, completion: nil)
            }
        }
    }

func handleCellSelection(_ cell: UICollectionViewCell, indexPath: IndexPath){
    if cell.backgroundColor == UIColor.white{

        cell.backgroundColor = UIColor(hexString: "#FFB74D")
        self.selectedServicesId.add(servicesData!.data[indexPath.row].id)
        self.searchView.alpha = 1
    }else{
        cell.backgroundColor = UIColor.white
        self.selectedServicesId.remove(servicesData!.data[indexPath.row].id)
        if selectedServicesId.count == 0{
            self.searchView.alpha = 0
        }
    }
}
}

и в вашем didSelectItemAt:

 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let cell : UICollectionViewCell = collectionView.cellForItem(at: indexPath) as! CategoryCollectionViewCell
        handleMultipleCellSelection(cell, indexPath: indexPath)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...