2016-09-10 9 views
0

コレクションビューを使用する方法を学習しようとしています。写真ライブラリ の写真にアクセスしてコレクションに入れることができますビュー。フォトライブラリの画像をコレクションビューに読み込む方法を教えてください

問題は、セル内に何もない靴をクリックしたときに写真がセルに表示されてしまうことです。私は何が間違っているのか分かりません。私は私が何かが欠けていますが、私は何を知らないかなり確信している「

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) 




} 

Collectionviewセル

import UIKit 

class ImageCollectionViewCell: UICollectionViewCell { 


@IBOutlet weak var imageView: UIImageView! 



func configurecell(image: UIImage){ 


    imageView.image = image 





} 

}

+0

これは、画像データ表現を保持するデータの配列を使用して行うことができます。 'UIImageJPEGRepresentation'を使用してください。次に、ボタンのタグを使用してアクセスできます –

答えて

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) 
    } 
関連する問題