[ iOS / 개념 ] swift 화면전환 : view 위에 다른 view 가져오기는 방법

Woong·2022년 6월 9일
0

헬스장 멤버 체크인 앱을 제작하던 도중, 화면전환을 해야 할 일이 있었다. 나는 그동안 segue(Viewcontroller간 상호연결) 와 navigation(embed In) 기능만 있으면 스토리보드에서 전환하는 방식 이외 따로 별도의 코드를 실행시킬 필요가 없을 줄 알았는데 그게아니였다.
회원의 Dictionary Key 값에 맞춰 로그인을 시키는 if문을 작성하던 도중 위 두가지 방식으로는 문제를 해결할 수 없다는 것을 알고 난 후, 화면전환을 코드로 실행하는 방법을 알아둬야하는구나 하고 느꼈고 그 개념에 대한 100% 이해가 선행되어야만 뭐든 할 수 있겠구나 해서 이 글을 작성해본다.

1. 뷰 컨트롤러의 view 위에 다른 view를 가져오기

1단계 : 스크린에 띄울 뷰 컨트롤러를 스토리보드로부터 읽어와 인스턴스화 하기

 // 1. 이동할 뷰 컨트롤러 객체를 StoryBoardID 정보를 이용하여 참조.
  let uvc = self.storyboard?.instantiateViewController(withIdentifier: "secondVC")

인자값으로 입력된 storyboard ID와 일치하는 뷰 컨트롤러를 찾아 인스턴스를 생성하고 이 값을 받아온다.

2단계 : 화면 스타일을 정의해주기

 // 2. 화면 전환할 때의 애니메이션 타입
    uvc?.modalTransitionStyle = UIModalTransitionStyle.coverVertical

이 단계에서 UIModalTransitionStyle의 메서드를 coverVertical을 사용했지만,
이를 다른방식으로 바꿔주면 어떨까? 대표적으로 총 3가지 방식이 있다.

3단계 : present 메소드 호출

// 3. 인자값으로 뷰 컨트롤러 인스턴스를 넣고 프레젠트 메소드 호출
    self.present(uvc!, animated: true)

최종적으로 화면 전환을 처리하는 부분. 이 메소드는 모두 두 개의 인자값을 필요로 함.

첫번째 인자값, 우리는 이미 instantiateViewController(withIdentifier:) 메소드를 통해 인스턴스를 만들어 uvc 상수에 저장해 주었고 이를 인자값으로 넘겨주면 됨.

두번째 인자값, 애니메이션을 사용 할 것인지 말것인지 여부를 Bool 타입으로 입력해주면 된다. 만약, true로 입력해준다면 2단계에서 지정한 애니메이션 타입이 실행 될 것이다!

다른방법으로는 아래와 같은 방법들이 있다. 이 방법들은 필요할때마다 하나하나 알아보고 포스팅해보자. 아래는 참조 영역임!

2. 뷰 컨트롤러에서 다른 뷰 컨트롤러를 호출하기

3. 내비게이션 컨트롤러를 사용하기

4. 화면 전환용 Segue를 사용하기

profile
https://github.com/iOS-Woong

0개의 댓글