質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
バックグラウンド処理

バックグラウンド処理とは、マルチタスク環境において、ユーザーに対して前面に表示させている処理の裏側で実行させる処理のことを呼びます。バックグラウンド処理を行う事によって、ユーザーが他の作業に携わることが可能となります。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

982閲覧

バックグラウンド状態から、画面が表示された時に処理を行う方法

tomaa

総合スコア84

バックグラウンド処理

バックグラウンド処理とは、マルチタスク環境において、ユーザーに対して前面に表示させている処理の裏側で実行させる処理のことを呼びます。バックグラウンド処理を行う事によって、ユーザーが他の作業に携わることが可能となります。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2020/09/06 02:36

編集2020/09/06 14:09

前提・実現したいこと

SwiftUIでアプリを開発しています。

ある対象の画面が表示された時に処理を行いたいです。

onAppearメソッドを使った場合、

  • アプリが起動した時(再起動させた時)
  • 複数の画面間で遷移された時

の条件では、処理を行う事ができますが、

アプリが起動しており、対象の画面を表示した状態でバックグラウンド状態(ホームボタンを押す等)にして、再度対象の画面を表示しても、onAppearが動きません。
*動きの模式図を添付

このように、バックグラウンド状態から対象画面を表示した際に、処理を行う方法はありますでしょうか?

ご存知の方おりましたら、ご教授いただけないでしょうか?

イメージ説明

追記

SceneDelegate.swift内のsceneWillEnterForegroundsceneWillResignActiveを利用すると、バックグラウンド状態からフォアグラウンド状態になる事で処理をできる事がわかりました。

しかし、今回のようにTabViewを利用している際は、どちらのviewでも処理が行われてしまいます。
sceneWillEnterForegroundsceneWillResignActiveをどちらかのviewのみ処理できるような方法はありますでしょうか?

func sceneDidBecomeActive(_ scene: UIScene) { print("BecomeActive") } func sceneWillEnterForeground(_ scene: UIScene) { print("Foreground") }

該当のソースコード

swiftUI

1import SwiftUI 2 3struct ContentView: View { 4 5 @State private var selection = 0 6 7 var body: some View { 8 TabView(selection: $selection){ 9 Text("First View") 10 .onAppear(){ 11 print("First") 12 } 13 .tabItem { 14 Text("First") 15 } 16 .tag(0) 17 18 Text("Second View") 19 .tabItem { 20 Text("Second") 21 } 22 .tag(1) 23 } 24 } 25} 26 27struct ContentView_Previews: PreviewProvider { 28 static var previews: some View { 29 ContentView() 30 } 31}

補足情報(FW/ツールのバージョンなど)

Xcode: Version 11.7

Swift: Swift 5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問