iOS

【Swift】whose view is not in the window hierarchyで画面遷移に失敗する

投稿日:

はじめに

こんにちはsuzukiです。今回は備忘としてwhose view is not in the window hierarchyというデバッグ中に表示されるエラーについて、簡単にまとめて行きたいと思います。

エラーの概要

ViewWillAppearとかViewDidLoadの描画中のタイミングで画面遷移を行おうとした際に発生するエラー、
アプリはクラッシュ等は発生しないが、画面遷移がされない。

今回出会った事象

上記のエラーは結構有名で、連続する画面遷移などを設計した際に発生するのですが、
今回出会った内容としてアプリのバックフォアのタイミングで下記のスレッドが動き発生していました。

スレッドA(A画面の処理)
→ A画面からB画面を表示

スレッドB(共通の処理)
→ 現在の画面を新規にA画面のインスタンスを生成して置き換える

という二つのスレッドがパラレルにA→Bの順番で呼ばれ発生しスレッドBの内容が行われていませんでした。
またスレッドBの処理はwhich is already presentingというエラーも併発しており、画面の状態がかなりぐちゃぐちゃになってしまっていました。

行った対応

今回の場合は下記の理由により
・スレッドAの処理を止めることが仕様上できない
・スレッドBの処理がアプリの処理として、優先されるべき
スレッドBの処理を行う際に画面Aと画面Bが表示されている場合は閉じたあと再度スレッドBの処理を行い、画面Aを表示しました。

さいごに

今回、見慣れたエラーの内容ですが、異なるスレッドで画面の遷移がエラーが重複していたため、原因の特定にかなり時間がかかりました。こういうバグが発生する状況を改善させないためにはどのように開発していくべきなのか、シンプルな作りとはなんなのか、と改めて考え直したい出来事でした。

おすすめ書籍

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus 詳解 Swift 第4版 [改訂新版]Swiftポケットリファレンス (POCKET REFERENCE)

page_footer_responsive




-iOS
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

【Swift】iOS15UIMenuの挙動変更について

1 はじめに2 UIMenuとは3 UIMenuの実装4 動作確認5 さいごに6 おすすめ書籍 はじめに こんにちは、suzukiです。ハーフモーダルの記事をみてiOS15についてあまりきにできていな ...

【Swift】WKWebViewのUserAgentを変更する

1 はじめに2 UserAgentとは3 UserAgentの変更方法3.1 UserDefaultを利用して変更する方法3.2 WKWebView.customUserAgentを利用して変更する方 ...

no image

iOSでFirestoreを使ってみた その2

1 はじめに2 リスナーのアタッチ2.1 ドキュメントのリッスン2.2 複数ドキュメントのリッスン3 ドキュメントの変更タイプの取得4 リスナーのデタッチ5 さいごに6 おすすめ書籍 はじめに 以前、 ...

iOS13ダークモード対応

1 はじめに2 一時しのぎ3 実装3.1 UI Element Colors3.2 Color Set3.3 コードで描きたい3.4 カスタムのカラーを定義する3.5 画像をモードで動的に変更したい4 ...

[SwiftUI]SwiftUIで動的にViewの更新をする方法

1 はじめに2 SwfitUIのViewについて3 値の更新について3.1 Stateの特徴3.2 ObservedObjectの特徴3.3 EnvironmentObjectの特徴4 さいごに5 お ...

フォロー

blog-page_side_responsive

2021年4月
 123
45678910
11121314151617
18192021222324
252627282930  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。