【发布时间】:2017-05-27 08:07:20
【问题描述】:
我有一个 collectionView 单元格,里面有一张图片。当用户点击图像时,会弹出图像选择器。但是,选择图像时,CollectionView中的图像不会更新。我在常规 UIViewController 中使用了完全相同的代码并且它有效,所以我假设它是因为这是在 UICollectionViewController 中。
这是应该更新图像的代码:
func updateCollectionView(image: UIImage) {
let indexPath = IndexPath(item: 3, section: 0)
if let LoginCell = collectionView.cellForItem(at: indexPath) as? LoginCell {
LoginCell.logoImageView.image = image
}
collectionView.reloadItems(at: [indexPath])
}
这里是委托函数:
weak var delegate: LoginControllerDelegate?
func updateCollectionView(image: UIImage) {
delegate?.updateCollectionView(image: image)
}
这里是将委托和 updateCollectionView 函数联系在一起的选择器函数:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
print(info)
picker.delegate = self
var selectedImageFromPicker: UIImage?
if let editedImage = info["UIImagePickerControllerEditedImage"] {
selectedImageFromPicker = editedImage as? UIImage
} else if let originalImage = info["UIImagePickerControllerOriginalImage"] {
selectedImageFromPicker = originalImage as? UIImage
}
if let selectedImage = selectedImageFromPicker {
updateCollectionView(image: selectedImageFromPicker!)
}
}
这里是 collectionView 方法,LoginCell 是我试图调出选择器的地方:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{
return pages.count + 1
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if indexPath.item == pages.count{
let loginCell = collectionView.dequeueReusableCell(withReuseIdentifier: loginCellId, for: indexPath) as! LoginCell
loginCell.delegate = self
return loginCell
}
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! PageCell
let page = pages[indexPath.item]
cell.page = page
return cell
}
这是我在协议中创建的委托方法:
protocol LoginControllerDelegate: class {
func updateCollectionView(image: UIImage)
【问题讨论】:
-
你是在挑选图片后重新加载数据吗?
-
我试过了,没用
-
如何更新单元格中的
imageView?你在这里所做的就是更新logoImageView -
更新
imageView是什么意思?我更新了 UICollectionView,但没有做任何事情,所以我删除了它。您如何专门更新imageView? -
@chillin' 你能否展示一下 collectionView 方法,让我们了解问题所在
标签: ios swift xcode uicollectionview uiimagepickercontroller