从图库中的CollectionView中显示图像

时间:2017-06-27 11:31:54

标签: swift3 uicollectionview uiimagepickercontroller

我想将从gallery中选择的图像显示在CollectionView中的ImageView中。我该怎么做呢?? 在普通ImageView中显示selectedImage工作正常。

以下是我的代码:

var selectedImage = UIImage ()
@IBAction func selectPics(_ sender: Any)
{
    if self.picsCollectionView.isHidden == true
    {
        self.picsCollectionView.isHidden = false
        self.imageView.isHidden = true
    }

    self.picker.allowsEditing = true
    self.picker.sourceType = .photoLibrary
    present(self.picker, animated: true, completion: nil)
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info:[String: Any])
{
    if let image = info[UIImagePickerControllerEditedImage] as? UIImage
    {
        selectedImage = image
    }
    else if let image = info[UIImagePickerControllerOriginalImage] as? UIImage
    {
        selectedImage = image
    }
    else
    {
        print("Something went wrong")
    }

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

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
    return 1
}

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

    cell.cellImgView.image = selectedImage

    return cell
}

1 个答案:

答案 0 :(得分:0)

找到答案。需要添加一行。

以下是解决方案:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info:[String: Any])
{
    if let image = info[UIImagePickerControllerEditedImage] as? UIImage
    {
        selectedImage = image
        self.picsCollectionView.reloadData()
    }

    else if let image = info[UIImagePickerControllerOriginalImage] as? UIImage
    {
        selectedImage = image
        self.picsCollectionView.reloadData()
    }

    else
    {
        print("Something went wrong")
    }

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