【SwiftUI】画面遷移時にアラートが表示されない不具合

画面遷移時にアラートが表示されない不具合に遭遇したので、記録を残しておきます。

スポンサーリンク

環境

この記事の情報は次のバージョンで動作確認しています。

【Xcode】12.5RC
【Swift】5.4
【iOS】14.5
【macOS】Big Sur バージョン 11.1
スポンサーリンク

問題の現象

iOS14.5で次のコードを実行すると、アラートが表示されずにエラーログが出力されます。

エラーログ

スポンサーリンク

原因と対処方法

条件としてはList+navigationLinkで遷移した後に.onAppearでアラートを表示しようとすると発生します。
遷移した画面のViewの階層構造が作られる前にアラートを描画しようして失敗しているようです。
同じコードをiOS14.4で実行すると、アラートが表示されるので、iOS14.5でなんらかの変更があったと思われます。

対処として、次のようにアラートの表示部を非同期キューに入れてやると正常に動作します。

正常な動作

スポンサーリンク

参考リンク

Problem with alert in iOS4.5 | Apple Developer Forums
スポンサーリンク

あわせて読みたい記事

【SwiftUI】アラートの使い方(alert)
(2020/8/13 更新)ユーザーに確認を促すアラートダイアログを表示する、.alert()の使い方について解説します。
【SwiftUI】Listの使い方
(2021/2/28 更新)Listはデータの一覧表示をするのに適したViewです。画面に収まらない量の場合はスクロール表示になるなど、UIKitのUITableViewに似ていますが、はるかに簡単に使えます。ListはForEac...
【SwiftUI】NavigationViewでの画面遷移
(2020/11/8 更新)NavigationView配下での画面遷移について解説します。
スポンサーリンク
SwiftUI
カピ通信