В моем приложении пользователь может выбрать изображение с помощью imagepicker. После того, как он выбрал, я хочу обновить свой вид коллекции (или tableview) с новым изображением. Но даже если вызываются перезагрузки funcs и новый элемент в моем списке, пользовательский интерфейс не обновляется.Добавить данные и перезагрузить CollectionView после увольнения ImagePicker - Swift - iOS
EDIT TO HIGHLIGHT ЭТО: Я упрощаю код с отменой отмены вместо этого, потому что поведение такое же. Я знаю, что мне нужно позвонить didFinishWith ... но я хочу выделить поведение, вызванное увольнением.
var files = [File]() // populate my collectionview or tableview
// ... code
// ... more code
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
self.dismiss(animated: true) {
let newFile = File(name: "test")
self.files.append(newFile)
DispatchQueue.main.async {
self.collectionView?.reloadData()
// self.tableView?.reloadData() has the same behavior
}
}
}
Если я печатаю в CollectionView-CellForItemAt ... Я вижу, что у меня есть новый элемент в списке, но не показывают на экране.
Я пробую разные вещи, но ничего не работает или кажется очень грязным для меня. Любая идея выполнить это правильно?
(я уже вижу эту тему: UICollectionView won't reloadData() after UIImagePickerController dismisses)
EDIT для получения дополнительной информации:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.files.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ItemCell", for: indexPath) as! CollectionViewCell
cell.file = self.files[indexPath.row]
cell.filenameLabel.text = self.files[indexPath.row].name
// other customization of cell
print(cell.file.name)
return cell
}
Вы должны использовать этот метод: 'didFinishPickingMediaWithInfo' и показать свой код 'CellForItemAt' –
@Lyume Я думаю, что для этого типа требования вы должны пойти с PHASSET –
Как я уже сказал, я просто покажу вам пример с отменой, чтобы упростить понимание. – Lyume