iOS

【iOS13対応】モーダルビュー(pageSheet)使用時の注意点!

先日、4年前に作成した電卓アプリを久しぶりにアップデートしました。

PractiCalculator

アプリの起動時のメインである電卓ビュー(ViewController)のビューと各種設定を変更するビュー(ConfigViewController)だけのシンプルなアプリです。

viewWillAppearやviewDidAppearが呼ばれない

設定ビューをiOS13でデフォルト?となったpageSheet(モーダルビュー)にしたところ、メインの電卓ビューに戻った時に今まで呼ばれていた、viewWillAppearやviewDidAppearが呼ばれなくなりました。

設定シートで変更したアプリのバックグラウンドカラーなどの設定を即座にアプリに反映させるためにviewWillAppearに処理を書いていましたが呼び出されなくなり困りました・・・

色々とググって調べたところ、解決策が見つかりましたので備忘録として残しておきます。

モーダルビュー(PresentationがPage Sheetのビュー)に以下を追加する

このコードを追加することによって、

viewWillAppear

viewDidAppear

viewWillLayoutSubviews

viewDidLayoutSubviews

が呼び出されるようになりました。メデタシメデタシ!

参考までに、下の図の左側はFull Screen Viewへ遷移して戻った時に呼び出されるライフサイクルです。

真ん中がPage Sheet View へ遷移し、スワイプダウンで戻った時に呼ばれるライフサイクルです。何も呼び出されていません。

右側が上記コードを追加した結果です。

GitHubにプロジェクトを公開しています
https://github.com/tn-works-jp/LifeCycle

開発環境:
iMac (Retina 5K, 27-inch, Late 2015)
macOS Catalina Version 10.15.5
Xcode Version 11.5 (11E608c)

参考文献「https://techblog.recochoku.jp/7215

-iOS

Copyright© ぽんこつ爺の備忘録 , 2021 All Rights Reserved.