загрузить изображение в ячейку из средства выбора изображений - PullRequest
0 голосов
/ 12 декабря 2018

Я вызываю средство выбора изображений, когда ячейка используется в виде коллекции:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    switch indexPath.row {
    case 2:
        imagePicker.delegate = self
        imagePicker.sourceType = .savedPhotosAlbum;
        imagePicker.allowsEditing = false
        self.present(imagePicker, animated: true, completion: nil)
    default:
        break
    }
}

Затем я хочу загрузить изображение в imageView моей ячейки:

 func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){
    self.dismiss(animated: true, completion: { () -> Void in
    })
    //imageView.image = image   ---> need imageview in a cell wit indexpath = 2
}

Какреализовать делегатов и протоколы?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

В делегате средства выбора изображений необходимо обновить модель данных, используемую для заполнения представления вашей коллекции.Затем вы указываете представлению коллекции перезагрузить эту связанную строку.

Это, конечно, предполагает, что ваша cellForItemAt написана для правильной установки изображения ячейки из модели данных.

0 голосов
/ 12 декабря 2018

Вы можете попробовать

Опция # 1

 arr[2] = image
 let cell = collectionView.cellForItem(at:IndexPath(row:2,section:0)) as! cellName 
 cell.imageView.image = image

Опция # 2 (рекомендуется), так как плохая идея получить доступ к ячейке вне таблицы

отредактируйте изображение в модели, затем перезагрузите таблицу / indexPath

func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){
  self.dismiss(animated: true, completion:nil)
  arr[2] = image
  let indexPath = IndexPath(item: 2, section: 0) 
  self.collectionView.reloadItems(at: [indexPath])
}

Plus cellForItemAt должен иметь

let cell = ///
cell.imageView.image = arr[indexPath.row]
...