Выбор и удаление изображений в представлении коллекции - PullRequest
0 голосов
/ 14 октября 2018

Как бы я выбрал несколько изображений и либо поднял вид с опциями обмена, либо смог бы удалить их из представления коллекции?Я относительно новичок в программировании, и если у кого-то есть решение или он знает лучший способ сделать это, пожалуйста, ответьте, так как это было бы очень полезно.Спасибо.

class ViewController: UICollectionViewController, UIImagePickerControllerDelehye5gate, UINavigationControllerDelegate, UICollectionViewDelegateFlowLayout {
    @IBOutlet weak var imageViewTwo: UIImageView!

    var imageArray = [UIImage]()

    override func viewDidLoad() {
        super.viewDidLoad()
        imageViewTwo.isHidden = true
    }

    @IBAction func chooseImage(_ sender: UIBarButtonItem) {
        let imagePickerController = UIImagePickerController()
        imagePickerController.delegate = self

        let actionSheet = UIAlertController(title: "Photo Source", message: "Choose a Source", preferredStyle: .actionSheet)

        actionSheet.addAction(UIAlertAction(title: "Camera", style: .default, handler: { (action: UIAlertAction) in
            if UIImagePickerController.isSourceTypeAvailable(.camera) {
                imagePickerController.sourceType = .camera
                self.present(imagePickerController, animated: true, completion: nil)
            } else {
                print("Camera is not available.")
            }
        }))

        actionSheet.addAction(UIAlertAction(title: "Photo Library", style: .default, handler: { (action: UIAlertAction) in
            imagePickerController.sourceType = .photoLibrary
            self.present(imagePickerController, animated: true, completion: nil)
        }))

        actionSheet.addAction(UIAlertAction(title: "Cancel", style: .default, handler: nil))

        self.present(actionSheet, animated: true, completion: nil)
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        let image = info[UIImagePickerController.InfoKey.originalImage] as! UIImage

        imageViewTwo.image = image
        imageArray.append(imageViewTwo.image!)
        collectionView.reloadData()

        picker.dismiss(animated: true, completion: nil)
    }

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        picker.dismiss(animated: true, completion: nil)
    }

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return imageArray.count
    }

    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath)

        let imageView = cell.viewWithTag(1) as! UIImageView
        imageView.image = imageArray[indexPath.row]
        return cell
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let width = collectionView.frame.width / 3 - 1

        return CGSize(width: width, height: width)
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
        return 1.0
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
        return 1.0
    }
}

1 Ответ

0 голосов
/ 14 октября 2018

В вашем cellForItemAt

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

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath)

    let imageView = cell.viewWithTag(1) as! UIImageView
    imageArray.append(imageViewTwo.image!)
    imageView.image = imageArray[indexPath.row]
    return cell
}

У вас есть эта строка

imageArray.append(imageViewTwo.image!)

Это добавление дополнительных изображений в массив, вы уже добавили изображение в этот массив вваш didFinishPickingMediaWithInfo метод, это вызывает дублирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...