- This topic has 1개 답변, 2명 참여, and was last updated 4 years, 6 months 전에 by 야곰.
1 답변 글타래를 보이고 있습니다
-
글쓴이글
-
-
5anniversary참가자
- 글작성 : 14
- 답글작성 : 7
이번 시간에는 백그라운드에서 포그라운드로 돌아갈 때 뷰 컨트롤러에서 탐지를 하고 뷰 컨트롤러 안에서 사용하는 방법에 대해 알아볼 거예요!!
기본적으로 제공이 되는 AppDelegate.swift, SceneDelegate.swift에서 제공되는
// in AppDelegate.swift func applicationWillEnterForeground(_ application: UIApplication) { print(#function) } // in SceneDelegate.swift func sceneWillEnterForeground(_ scene: UIScene) { print(#function) }
메서드로 백그라운드에서 포그라운드로 돌아오는 것을 탐지할 수 있지만
저의 경우에는 돌아올 때 해당 뷰 컨트롤러 안에서 특정한 클래스를 호출해 뷰 컨트롤러 위에 덧붙여야 할 필요가 있어 아래와 같은 방법을 사용했습니다.
class VC: UIViewController { private var observer: NSObjectProtocol? override func viewDidLoad() { observer = NotificationCenter.default.addObserver(forName: UIApplication.willEnterForegroundNotification, object: nil, queue: .main) { [unowned self] notification in // background에서 foreground로 돌아오는 경우 실행 될 코드 } } }
해당 방법을 사용하게 되면 어떤 뷰에서 백그라운드 ->> 포그라운드로 돌아오게 되었는지 탐지가 가능하게 됩니다.
그리고 해당하는 방법을 사용하면서 생기는 주의점이 있는데요!!
네비게이션 컨트롤러로 뷰컨트롤러가 쌓이게 되면 쌓이는 모든 뷰컨트롤러에서 해당 노티피케이션을 가지고 있기 때문에
네비게이션 루트 뷰 컨트롤러에서도 해당 코드를 작성하게 된 경우 back 버튼을 누르는 순간 루트 뷰에서도 해당 코드 안에 실행되는 코드가
실행이 됩니다. 따라서, 분기 처리를 통해서 코드를 작성해주셔야 합니다.
2020-05-02 오전 1:22 #7427
-
-
글쓴이글
1 답변 글타래를 보이고 있습니다
- 답변은 로그인 후 가능합니다.