본문 바로가기
TIL(Today I Learned)

2024.04.26 Today I Learned

by 승환파크 2024. 4. 26.

어제 작성한 TIL 에서 세그를 이용하여 Custom 세그를 만들어 화면전환을 진행했었다.

 

하지만 코드에 대한 이해가 부족해 자꾸만 오류가 발생하며 화면 전환이 되어도 뭔가 이상한 느낌이 계속 되어 화면 전환을 하는 방법을 바꾸어 보았다.

 

바로 네비게이션을 이용한 방법이 아닌 모달로 화면을 전환하는 방법이었다.

모달 창을 전체 화면으로 설정하면 화면이 전환되는 모양으로 보인다.

@IBAction func ChangeVIewButton(_ sender: Any) {
    print("클릭")
    guard let gameViewController = self.storyboard?.instantiateViewController(withIdentifier: "gameView") as? GameViewController else { return }
    // 화면 전환 애니메이션 설정
    gameViewController.modalTransitionStyle = .coverVertical
    // 전환된 화면이 보여지는 방법 설정 (fullScreen)
    gameViewController.modalPresentationStyle = .fullScreen
    self.present(gameViewController, animated: true, completion: nil)
}

 

화면 전환을 위한 버튼을 하나 생성하고 그 버튼을 IBAction 으로 기능을 구현할 수 있도록 설정했다.

이후 guard 로 전환할 스토리보드의 idenfifierId 를 가진 스토리보드가 있는지 확인하고 있으면 그에 맞는 viewController 를 인스턴스화 한다. 만약 없다면 아무것도 하지않고 return 을 하게 된다.

이후 화면 전환을 할 애니메이션을 지정해주고 전환되는 화면이 보여지는 방법을 지정한다. 그 이후 'self.persent()' 함수로 지정한 뷰 컨트롤러를 모달로 표시를 하면 화면이 전환되는 것 처럼 보이게 된다.

 

이후 모달창을 종료하고 싶다면 아래와 같이 모달로 사용된 viewCotroller 에서 버튼을 하나 생성해 IBAction으로 함수를 지정해주면 창이 닫히고 메인 화면으로 돌아올 수 있다.

@IBAction func goToMain(_ sender: Any) {
    print("뒤로가기 클릭")
    self.presentingViewController?.dismiss(animated: true)
}

 

여기서 self.persentingViewController 는 현재 모달로 사용되는 viewController 를 의미하며 .dismiss 를 사용해 모달을 종료한다는 의미이다. 뒤의 파라미터는 애니메이션을 설정하는 것으로 닫히는 모션이 보이고 싶다면 true를, 만약 보이기 싫다면 false 를 파라미터로 넣어주면 된다.

 

사실 아직 수업을 듣지 않아서 어떠한 방식으로 화면전환을 하는 것이 좋은지는 잘 모르겠다.. 하지만 직접 구현을 해보았을 때 코드로 직접 매칭을 잡아주고 변경을 하는 방식이 조금 더 편리한 것 같다. 물론 사람의 스타일에 따라 갈릴꺼 같다는 생각이 든다.

'TIL(Today I Learned)' 카테고리의 다른 글

2024.04.30 Today I Learned  (0) 2024.04.30
2024.04.29 Today I Learned  (0) 2024.04.29
2024.04.25 Today I Learned  (0) 2024.04.25
2024.04.22 Today I Learned  (1) 2024.04.22
2024.04.19 Today I Learned  (1) 2024.04.19