ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iOS] detecting background => foreground in ViewController
    Programing/iOS 2020. 4. 24. 16:33

    안녕하세요 😁 5anniversary입니다!!

     

    이번 시간에는 백그라운드에서 포그라운드로 돌아갈 때 뷰 컨트롤러에서 탐지를 하고 뷰 컨트롤러 안에서 사용하는 방법에 대해 알아볼 거예요!!

     

    기본적으로 제공이 되는 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 버튼을 누르는 순간 루트 뷰에서도 해당 코드 안에 실행되는 코드가

     

    실행이 됩니다. 따라서, 분기 처리를 통해서 코드를 작성해주셔야 합니다. 

     

    추가적으로 수정해야하거나, 질문이 있으신 분들은 댓글 남겨주시면 되겠습니다!!

     

    'Programing > iOS' 카테고리의 다른 글

    [iOS] xib를 활용한 채팅 말풍선 만들기  (0) 2020.05.12
    [iOS] 로딩 뷰 만들기  (0) 2020.05.10
    [Swift] log  (0) 2020.04.25
    [iOS] MVVM  (0) 2020.04.02
    [iOS] YPImagePicker 사용기  (0) 2020.03.26

    댓글

Designed by Tistory.