今回は、Xcode で開発した iOS アプリで画面遷移をした際に発生した警告についてです。
エラーではないのでアプリがクラッシュすることはなかったのですが、気になるので調査・修正しました。
なお、タイトルの警告文は一部を削っています。
全文はこちらです。
<UIView: 0x151e15940; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x28380cfe0>>’s window is not equal to <[コントローラ名]: 0x151d123a0>’s view’s window!
今回参考にさせていただいた記事はこちら。
「window is not equal to」というログメッセージ – Crieit
https://crieit.net/posts/window-is-not-equal-toiOS – 「window is not equal to」というログメッセージ | teratail
https://teratail.com/questions/12348
これらの記事によると、別のページに遷移する際に使った self.performSegue(withIdentifier: "[遷移先のIdentifier]", sender: nil)
の付近で発生しているようです。
私の環境では、条件に応じてページ遷移する/しないという処理を記述しているのですが、その際に、下記のコードのように、遷移した後に return
を追加する必要があるとのことでした。
if [ページ遷移の条件式] { self.performSegue(withIdentifier: "[遷移先のIdentifier]", sender: nil) return }
行数でいうと 3行目です。
こちらを追加して再度実行したところ、無事に警告が発生しなくなりました!
なお、if 文などの中で指定していない場合は、return
は不要でした。
以上、iOS アプリでページ遷移をした際に発生する警告の対処方法でした。
ご参考になれば幸いです。