试图学习如何将图像从照片库加载到集合视图

时间:2016-09-10 08:14:26

标签: ios swift

我正在尝试学习如何使用集合视图,我想要做的是能够访问照片库中的照片 并将它们放在集合视图中。

我遇到的问题是当我点击它们时,单元格中的照片没有显示出来。我不确定我做错了什么。我很确定我错过了什么,但我不知道是什么。"

Promise

Collectionview单元格

 import UIKit
 import Photos

 class ViewController: UIViewController  , UICollectionViewDelegate , UICollectionViewDataSource , UICollectionViewDelegateFlowLayout , UIImagePickerControllerDelegate  , UINavigationControllerDelegate
{

@IBOutlet weak var collectionView: UICollectionView!

@IBAction func addPhoto(_ sender: AnyObject) {

    let picker:UIImagePickerController = UIImagePickerController()
    picker.sourceType = .photoLibrary
    picker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!

    picker.delegate = self
    picker.allowsEditing = false
    self.present(picker, animated: true, completion: nil)



}

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




    return cell
}

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


func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {



    if let pickedimage = (info[UIImagePickerControllerOriginalImage] as? UIImage){





    }
    dismiss(animated: true, completion: nil)




}

}

1 个答案:

答案 0 :(得分:0)

UIImagePicker选择多张图片: - Select Multiple Images

至于填充CollectionView,更新或存储数据源中的数据并调用update

import UIKit

import Photos


class ViewController: UIViewController  , UICollectionViewDelegate , UICollectionViewDataSource , UICollectionViewDelegateFlowLayout , UIImagePickerControllerDelegate  , UINavigationControllerDelegate

  {


  @IBOutlet weak var myCollectionView: UICollectionView!//Define separate collectionview outlet with a different name than any parameter in any of the function

  var imagesArray = [UIImage]()

  override func viewDidLoad(){
      super.viewDidLoad()
        myCollectionView.delegate = self
        myCollectionView.datasource = self
       }


  @IBAction func addPhoto(_ sender: AnyObject) {

    let picker:UIImagePickerController = UIImagePickerController()
    picker.sourceType = .photoLibrary
    picker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!

        picker.delegate = self
        picker.allowsEditing = false
            self.present(picker, animated: true, completion: nil)
         }


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

      cell.configurecell(imagesArray[indexPath.row])

     return cell

  }


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

      return imagesArray.count ?? 0

  }



  func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let pickedimage = (info[UIImagePickerControllerOriginalImage] as? UIImage){
        imagesArray = [pickedImage,pickedImage,pickedImage]//Will store three selected images in your array
           myCollectionView.reloadData()
   }
   dismiss(animated: true, completion: nil)
  }