浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【Swift】「<UIView>’s window is not equal to <XXXXController>’s view’s window!」の対処法

今回は、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-to

iOS – 「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 アプリでページ遷移をした際に発生する警告の対処方法でした。
ご参考になれば幸いです。

  • この記事いいね! (0)