【Swift】SVProgressHUDで読み込み中アイコンを表示しようとしたらアプリがクラッシュする

他アプリでも使っていた 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.swiftSceneDelegate.swift にコードを追加しないと正しく動作しないのだとか。
私の環境では、Xcode のバージョンは 13 なので、追加コードが必要みたいです。

追加するコードはこちら。
まず、AppDelegate.swift です。

var window: UIWindow?

関数内に書かず、グローバル変数として追加してください。

次に、SceneDelegate.swift には下記を追加します。
こちらは willConnectTo の関数内に追加してください。

let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window = self.window

追加するコードは以上です。
実際にコードを追加後にアプリを Simulator で実行したところ、今度は読み込み中アイコンが正しく表示されました!

 

以上、SVProgressHUD を使って読み込み中アイコンを表示しようとした時にアプリがクラッシュする現象の対処方法についてでした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG