티스토리 뷰

생각보다 뷰를 이동하거나 닫는 방법은 여러가지가 있습니다. 

그래서 저도 헷갈리고 잘 까먹어서 모아보았습니다. 

 

참고로 진짜 모아만 둔거라 설명은 따로 없습니다. 

 

보통 뷰는 수직으로 쌓이는 샌드위치라고 생각하면 이해하기 쉽더라고요.

 

* ViewController

func moveView(viewController : UIViewController,viewName : String){ 
    let vc = viewController.storyboard!.instantiateViewController(withIdentifier: viewName)
    vc.modalPresentationStyle = .fullScreen
    viewController.present(vc, animated: true)
}

* ViewController를 배경을 투명하게 해서 데려오고 싶은 경우 

func moveView(viewController : UIViewController,viewName : String){ 
    let vc = viewController.storyboard!.instantiateViewController(withIdentifier: viewName)
    vc.modalPresentationStyle = .overFullScreen //요기만 다름
    viewController.present(vc, animated: true)
}

* NavigationViewController

func goNextController(viewName : String){
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewController(withIdentifier: viewName)
    self.navigationController?.pushViewController(vc, animated: true)
}

* 모든 뷰 닫기 (맨 아래 화면으로 이동)

func finishViews(viewController : UIViewController){
    let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene
    let window = windowScene?.windows.first
    window?.rootViewController?.dismiss(animated: true, completion: {
        print("End All View")
    })
}

* 만약 일반뷰가 닫히면서 다른 NavigationViewController로 이동해야하면?

self.dismiss(animated: true){
    guard let homeVC = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") else { return }
    GlobalDefine.MAIN_NAVIGATE_CONTROL?.pushViewController(homeVC, animated: true)
}
//GlobalDefine.MAIN_NAVIGATE_CONTROL : navigationcontroller 선언해서 가져오면 됩니다.
 // 메인이 되는 뷰에서 
 GlobalDefine.MAIN_NAVIGATE_CONTROL = self.navigationController

* 앱 완전 종료

func closeApp(){
    UIApplication.shared.perform(#selector(NSXPCConnection.suspend))
    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
        exit(0)
    }
}

 

뭔가 알아두면 편해서 올려봅니다. 

도움이 되었으면 좋겠네요.

 

오늘도 파이팅입니다~

 

후일담

생각보다 편하게 잘쓰고 있어서 포스팅 하려하니까 이미 있었다는 점에 놀랐다 

댓글