У меня есть UICollectionView, на который пользователь может щелкнуть, и он показывает всплывающее окно, прикрепленное к нажатой ячейке. В iOS 12 всплывающее окно оставалось в том же источнике (x, y или ячейка), если данные перезагрузки вызывались или нет, но в iOS 13 всплывающее окно перемещается между ячейками, когда данные перезагрузки представления сбора
Следите за видео о поведении в iOS 13: https://vimeo.com/385021234
Презентация выполняется с использованием следующего кода:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
guard let cell = collectionView.cellForItem(at: indexPath) else {
return
}
presentPopover(from: self, cell: cell)
}
func presentPopover(from view: UIViewController, cell: UIView) {
let popoverView = PopoverViewController(nibName: "PopoverViewController", bundle: nil)
let popover: UIPopoverPresentationController = popoverView.popoverPresentationController!
popover.sourceRect = cell.bounds
popover.sourceView = cell
view.present(popoverView, animated: true, completion: nil)
}
А PopoverViewController использует modalPresentationStyle = .popover
Кто-нибудь имел эту проблему раньше в iOS 13? Наше приложение работало нормально в iOS 11 и 12.
У меня есть пример такого поведения в следующем git хранилище: https://github.com/diegodossantos95/UICollectionViewPopoverBug
Шаги для воспроизведения в хранилище:
Нажмите на ячейку коллекции
Откроется всплывающее окно
Подождите для перезагрузки данных
Спасибо,
D iego.