質問: ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/20bc580f4e8c6ba0f0a9ca2884929f99.png) swiftでバイクラリーガイド用アプリを制作しています。 アプリはFirstViewController(方位、移動距離), SecondViewController(地図上に移動の軌跡を表示)の2つの画面から構成されています。 FirstViewControllerとSecondViewControllerはタブで切り替えとなっています。(プロジェクト開始時に選択) FirstViewControllerでは既に方位、移動距離が実装できており、バックグラウンドでも動作しています。 しかし、SecondViewController(内容は現時点で空)にタブを切り替えた瞬間にバックグラウンドでの動作が止まってしまいます。 SecondViewControllerに切り替えてもFirstViewControllerで実装したGPSがバックグラウンドで動作するにはどのような方法がありますでしょうか?よろしくお願い致します。 (SecondViewControllerにも明示的にバックグラウンド処理の記載が必要かとも思い始めていますが、SecondViewControllerには具体的な処理を一切記載しない初期段階でもFirstViewControllerに記載したGPSのバックグラウンド処理が停止してしまい、対処が分かりません。。。) (暫定対応) アプリをシングルViewControllerで作り直し、一旦この問題を回避しました。 とはいえ、理想は2つのViewControllerで機能を分けたいので、回答をお持ちの方は引き続きお知恵を拝借いただけると幸いです。
回答: ~~取り急ぎ、助言までに。~~ gpsをmanageするコードを 別クラスでsingletonで作成すれば、解決すると思います。 自分も似たようなことをコードで書いたことあるんですが、 その時の参考にしたサイトがすぐ見つけられなくて、、、 見つかったら、再投稿させていただきます。 **再投稿しました。** 自分の過去のプログラムを参考に singletonで作成しようと試みましたが、うまくできませんでした。 singletonは言わば独立した別のものとして、独立してGPSだけ存在させることです。 observerパターンと組み合わせることで、他のviewでもデータをリアルタイムに取得できるようにできます。 singletonは作れませんでしたが、試したところ、viewが消えてもgpsは背景で動いてましたよ。 一応、サンプルプログラムを作ってみました。 viewが切り替わってもコンソール見ると、GPSは動いてて、GPSを新規取得・表示できているはずです。 マップに軌跡を表示するなら、何らかのデータ保存方法・クラスを用意すれば目的は達せられると思います。 参考になれば幸いです。 https://github.com/hameji/simpleGPS/