화면 전환의 종류

2022. 6. 6. 21:16iOS


ios화면 전환방식
-소스 코드에서 구현하는 방식 : 프로그래밍적으로 화면을 전환한다, 동적으로  화면을 전환한다.

-스토리보드에서 구현하는 방식 : GUI 방식으로 화면을 전환한다, 정적으로 화면을 전환한다.

동적인 방식은 특정 상황에 대응 할 수 있다.
대신 복잡하고  어렵다.
정적인 방식은 일괄적으로 적용 되는 것이라 특정 상황에  대응하기 어렵다  대신 그만큼  구현 하기 쉽다.

- ios에서의 화면 전환 개념
-뷰 컨트롤러의 뷰 위에 다른 뷰를 가져와 바꿔치기하기
-뷰 컨트롤러에서 다른 뷰 컨트롤러를 호출하여 화면 전환하기
-내비게이션 컨트롤러를 사용하여 화면 전환하기
-화면 전환용 객체 세그웨이(Segueway)를 사용하여
화면 전환하기

1. 뷰를 이용한 화면 전환

메모리 overflow 위험이 있기 때문에 좋은 방법이 아니라고 합니다.(두개 이상의 루트 뷰를 관리해야하므로)

2.뷰 컨트롤러에서 다른 뷰 컨트롤러를 호출하여 화면 전환하기

-직접 표시한다는 의미에서 프레젠테이션 방식 이라 부른다.
간단한 예시)
(1) 다음과 같이 두 화면을 구성하고 두번째 뷰 컨트롤러를 선택한 뒤 오른쪽 Identity Inspector 의 Identity - Storyboard ID 를 지정합니다.

(2) 첫번째 뷰 컨트롤러에 Go to Second 버튼을 @IBAction 으로 Ω연결합니다.

@IBAction func moveSecond(_ sender: Any) {
    //storyboard를 통해 두번쨰 화면의 storyboard ID를 참조하여 뷰 컨트롤러를 가져옵니다.
    guard let svc = self.storyboard?.instantiateViewController(withIdentifier: "SecondVC") else {
    	return
    }
    
    //화면 전환 애니메이션을 설정합니다. coverVertical 외에도 다양한 옵션이 있습니다.
    svc.modalTransitionStyle = UIModalTransitionStyle.coverVertical
    
    //인자값으로 다음 뷰 컨트롤러를 넣고 present 메소드를 호출합니다.
    self.present(svc, animated: true)
}



(3) 내비게이션 컨트롤러를 사용하여 화면 전환하기 (show == push)

Navigation Controller를 사용하여 화면이 전환됩니다.
이 방법으로 화면 전환을 하려면 먼저 Navigation Controller를 embed in 해주어야 합니다.
그 뒤에 다음과 같은 코드를 작성합니다.
class ViewController: UIViewController {

@IBAction func navPush(_ sender: UIButton) {
let pushVC = self.storyboard?.instantiateViewController(withIdentifier: "navPush") //(2번째 뷰컨의 아이덴티설정값)
self.navigationController?.pushViewController(pushVC!, animated: true)
}

사진과 같이 나타 날것이며, 푸쉬 버튼을 누르게 될경우 "네비"화면으로 넘어가게 된다.
push는 Navigation Stack에 쌓이는 방식이라고 합니다

(4) 화면 전환용 객체 세그웨이(Segueway)를 사용하여 화면 전환하기

segue를 사용하는 방법은 스토리보드 상에서 viewController들을 연결시키는 방법입니다. 전환 흐름을 시각적으로 알 수 있어서 눈으로 보기에는 굉장히 편합니다. 그리고 별다른 코드 없이 간단하게 전환을 할 수 있지만 직접 드래그 앤 드랍으로 연결을 해줘야한다는 불편함이 있을 수 있습니다.
@IBAction func segueBtn(_ sender: UIButton) {
self.performSegue(withIdentifier: "segueShow", sender: self)
}

코드를 작성후 사진과 같이 segue창에서 세그 창으로 전환된다.
세그 화면전환시에는 가운데 시작점 도착점 표시가 필요로 하다.