대표적인 방법 4가지
ViewController의 view 바꿔치기
-메모리 overflow 위험이 있기 때문에 좋은 방법이 아니라고 한다.
ViewController가 다른 ViewController를 호출(present)
-내가 가장 많이 쓰는 방법.
먼저 두개의 ViewController를 세팅하고 나같은 경우에는 각 뷰컨트롤러에 버튼을 만들어 firstVC에서는 아래의 코드를,
@IBAction func buttonTapped(_ sender: UIButton) {
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController
guard let SecondVC = vc else {return}
SecondVC.modalTransitionStyle = .coverVertical
SecondVC.modalPresentationStyle = .fullScreen
self.present(SecondVC, animated: true)
}
secondVC에서는 dismiss함수를 활용하여 화면 전환을 구성해보았다.
@IBAction func buttonTapped(_ sender: UIButton) {
self.dismiss(animated: true)
}
버튼을 클릭하면 화면이 전환되는 것을 확인할 수 있다.
NavigationViewController 사용하여 화면 전환(push)
- 처음 rootViewController에 navigationController를 embed in 해주기
push할 뷰컨을 생성하고 push 해주기
let pushVC = self.storyboard?.instantiateViewController(withIdentifier: "NavigationPushViewController") as? NavigationPushViewController
guard let navigationPushViewController = pushVC else {return}
self.navigationController?.pushViewController(navigationPushViewController, animated: true)
아래와 같이 잘 실행된다. 내비게이션 컨트롤러는 stack에 쌓이는 방식이기 때문에 back 버튼이 자동으로 생성된다.
화면 전환용 객체 Segue 사용
segue를 사용하게 되면 스토리보드상에서 경로가 시각적으로 나타난다.
segue에도 종류가 있음.
- 액션 세그웨이 - 버튼, 테이블 셀 등 이벤트 트리거에 자동으로 연결
- 메뉴얼 세그웨이 - 출발점이 뷰 컨트롤러 자체인 경우, performSegue(withldentifier:sender:) 메소드를 적절한 시점에 호출해 화면 전환
segue의 방식
- Show: 일반적으로 사용하는 방식, push pop 내비게이션 영역에 스택처럼 쌓인다, 새 화면이 원래 화면을 덮는다, 직전 뷰로 돌아가는 버튼 제공, 내비게이션 컨트롤러를 사용하지 않으면 present modally
- Show Detail: 아이폰에서는 똑같이 보이지만 아이패드에서 splitView에서 사용한다, view간 수직적 계층이 생긴다(master-datail)
- Present Modally: 일시적으로 강조하고 싶은 화면을 보여줄 때(일반적인 모달)
- Present As Popover: 아이패드 팝업창
- Custom: 사용자 정의
액션 세그웨이
-이벤트 트리거(ex uibutton)을 선택한 상태에서 전환할 뷰 컨트롤러에 컨트롤키를 누른 상태에서 드래그 앤 드랍
-아주 간단하게 코드 없이도 화면 전환을 구현할 수 있다.
매뉴얼 세그웨이
뷰 컨트롤러 끼리 segue를 지정하고 performSegue메서드를 활용하여 화면 전환을 구현하고 싶은곳에 직접 구현하는 방식
@IBAction func manualSegueTapped(_ sender: UIButton) {
self.performSegue(withIdentifier: "ToSecondVC", sender: self)
}
뷰컨트롤러 끼리 segue를 설정하고, button이 tapped되었을때의 ibaction메서드 안에 performSegue함수를 이용하여 화면 전환
performSegue함수의 withIdentifier 식별자는
요런식으로 해당 segue를 눌렀을때 xcode 화면 우측에서 설정해주면 된다.
잘 실행된다 ^^
'iOS' 카테고리의 다른 글
iOS - App life cycle에 대해 (0) | 2022.07.13 |
---|