Методы жизненного цикла не вызываются, когда мы закрываем модальные окна в iOS13

Apple представила карточный стиль представления в iOS13, т.е. (https://medium.com/@hacknicity/view-controller-presentation-changes-in-ios-13-ac8c901ebc4e). С этим изменением все листы страниц и форм будут отображаться в виде карточек с функцией, которую можно отклонить как смахивание, которое дает нам яблоко. Теперь у нас есть два способа закрыть приложение.

  1. Закрыть смахиванием
  2. Закройте, нажав кнопку закрытия / отмены на представленном контроллере

Вещи, затронутые этим изменением. Поскольку представление больше не удаляется из иерархии, методы жизненного цикла, такие как (viewWillAppear, viewDidAppear, viewWillDisappear, viewDidDisappear), не будут вызываться в PresentViewController.

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

Также попробовал установить isInModalPresentation = true, который остановит функцию отклонения. Но отклонить, нажав кнопку закрытия / отмены на представленном контроллере, по-прежнему не будет вызывать методы жизненного цикла в контроллере представления представления.

Я не хочу, чтобы они также заставляли их работать в полноэкранном режиме.

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


person kushanky    schedule 10.10.2019    source источник


Ответы (1)


Используйте secondViewController.modalPresentationStyle = .fullScreen перед представлением secondViewController контроллера.

person Amir Khan    schedule 10.10.2019
comment
Есть определенные сценарии, особенно для iPad, где я хочу представить их в виде форм и страниц. Я не хочу заставлять их работать в полноэкранном режиме. - person kushanky; 10.10.2019
comment
Спасибо, у меня все работает нормально. - person Gaganpreet; 15.10.2019
comment
Нет, методы вызывают при представлении .popOver, .formsheet Итак, как мы можем обрабатывать обратные вызовы? - person Kumar Lav; 16.03.2021