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)

blog-page_footer_336




blog-page_footer_336




-iOS
-

執筆者:

免責事項

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


comment

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

CAPTCHA


関連記事

swift

SwiftでのDateクラスの煩わしさから解放されるSwiftDateを使ってみた

はじめに こんにちは、nukkyです。 Swiftでシステムアプリを作成する際に、 Dateクラスは必須だと思いますが 今回はDateクラスを使いやすく拡張してくれる SwiftDateを紹介します。 ...

swift

Swiftの配列、辞書関連メソッドの基本

はじめに 普段はRubyやPHPを学習しておりますが、少しSwiftの配列、ハッシュ(辞書)型のメソッドを教えていただきました。 せっかくなので記事にしたいと思います。 同じような境遇(あまりアプリ側 ...

swift

[Swift]ログフレームワーク「CocoaLumberjack」をSwiftで使ってみた

はじめに こんにちは、nukkyです。 今回はログ管理に便利なライブラリ「CocoaLumberjack」を紹介したいと思います。 準備 今回もおなじみCarthageを使用します。 Cartfile ...

swift

[Swift]UITableViewのカスタムセルをStoryboadで

はじめに こんにちは、nukkyです。 以前Xibを使用したUITableViewのカスタムセルの使い方を紹介しましたが、今回はXibを用意せずにStoryboadのみでUIを完結させるやり方を紹介し ...

swift

[Swift 3] テキストの装飾(フォント・文字サイズ・文字間隔・行間・文字色・下線)

はじめに どうもはじめです。 今回は文字の装飾をやってみようと思います。 完成図を載せておきます。   フォント・文字サイズ変更 [crayon-6ad99a326a530426136098 ...

フォロー

blog-page_side_responsive

2021年4月
日 月 火 水 木 金 土
 123
45678910
11121314151617
18192021222324
252627282930  

アプリ情報

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