我正在尝试学习如何使用集合视图,我想要做的是能够访问照片库中的照片 并将它们放在集合视图中。
我遇到的问题是当我点击它们时,单元格中的照片没有显示出来。我不确定我做错了什么。我很确定我错过了什么,但我不知道是什么。"
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)
}
}
答案 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)
}