他アプリでも使っていた SVProgressHUD
を新規アプリに導入した際、GitHub のサンプルコード通りに書いたはずなのにアプリがクラッシュしたので、その対応方法についてです。
うっかり次回導入時にも忘れそうなので、備忘録として追加。
SVProgressHUD の GitHub はこちら。
GitHub – SVProgressHUD/SVProgressHUD: A clean and lightweight progress HUD for your iOS and tvOS app.
https://github.com/SVProgressHUD/SVProgressHUD
なお、導入方法については GitHub で説明しているので、本記事では割愛させていただきます。
サンプルにある通り、SVProgressHUD.show()
で読み込み中アイコンを表示、SVProgressHUD.dismiss()
でアイコンを非表示、とそれだけのはずなのですが…いざ読み込み中アイコンを表示しようとしたところ、そこでアプリがクラッシュしました。
その修正にあたり、参考にさせていただいた記事がこちら。
SVProgressHUDをXcode11で使う – Qiita
https://qiita.com/rea_sna/items/330c5bfeb089f6dcdc79
なんでも、Xcode11 では AppDelegate.swift
と SceneDelegate.swift
にコードを追加しないと正しく動作しないのだとか。
私の環境では、Xcode のバージョンは 13 なので、追加コードが必要みたいです。
追加するコードはこちら。
まず、AppDelegate.swift
です。
var window: UIWindow?
関数内に書かず、グローバル変数として追加してください。
次に、SceneDelegate.swift
には下記を追加します。
こちらは willConnectTo の関数内に追加してください。
let appDelegate = UIApplication.shared.delegate as! AppDelegate appDelegate.window = self.window
追加するコードは以上です。
実際にコードを追加後にアプリを Simulator で実行したところ、今度は読み込み中アイコンが正しく表示されました!
以上、SVProgressHUD を使って読み込み中アイコンを表示しようとした時にアプリがクラッシュする現象の対処方法についてでした。
ご参考になれば幸いです。