Swiftで 数字がキーになっているJSONデータをデシリアライズする

下記のように店舗情報のキーが数字になっているJSONデータをデシリアライズできるか?と質問があり回答しました。 { "response": { "total_hit_count": 4, "0": { "shop_id": "6072772", "shop_name": "店舗A" }, "1": { "shop_id": "6072773", "shop_name":…

SwiftUIで UIActivityViewControllerを使って Tweetbotへ画像を共有して文字入力すると勝手にdismissされてしまう

iOSでテキストデータや画像を共有したい場合、UIActivityViewController を使用します。 SwiftUIではこのUIActivityViewControllerをラッピングして利用すると便利です。SwiftUIでUIActivityViewController を使う方法については「SwiftUIで UIActivityViewC…

SwiftUIで NavigationLinkで遷移した画面から戻ってきたときのイベントをハンドルしたい

NavigationLinkを使って画面Aから画面Bへ遷移して、画面Bから戻ったときにたとえばデータの再読み込みなどなんらかの処理をしたいが、普通にViewを書いていると 戻ってきたときに onAppear が呼ばれない現象が発生する。 本記事では、NavigationLinkを使って…

SwiftUIで Listの同じ行に複数のButtonを置くと両方とも反応してしまい個別にタップできない

SwiftUIで List の同じ行に複数の Button を置くと、すべてのButtonのアクションイベントが発生してしまい、それぞれのボタンを個別にタップできない。 本記事では、個別にタップする方法と、よりボタンらしく見せるために ButtonSyle を利用する方法を紹介…

SwiftUIで システムで定義されているUIColorの色を使いたい

SwiftUIでは直接UIColorを使うことができません。 実行環境 Xcode 11.6 iOS 13.6 UIColor to Color UIColorをSwiftUIのColorに変換するのは簡単です。 let color = Color(UIColor.label) システムで定義されているUIColorの色を使いたい Xcode 11.6時点で不…

SwiftUIで UIActivityViewControllerを使って画像を共有する

iOSで画像やテキストなどを他のアプリへシェアするときには UIActivityViewController を利用する。SwiftUIでも UIActivityViewControllerを使って画像を共有する処理を紹介する。 実行環境 Xcode 11.6 iOS 13.6 UIActivityViewControllerを使って画像を共有…

SwiftUIで ふたつの画面を連続してモーダル表示する

下図のように 画像を選択 → 画像の切り出し(クロッピング) と複数の画面を連続してモーダル表示させつつ遷移させたい。 モーダルA → モーダルB と連続して遷移できるが、モーダルBがなぜか閉じれなくなってしまう。 実行環境 Xcode 11.6 iOS 13.6 問題の挙動…