[swift] Swift 화면 전환 방법

Swift를 사용하여 iOS 앱을 개발하다보면 화면을 전환하는 기능을 구현해야 할 때가 있습니다. 이번 포스트에서는 Swift로 화면을 전환하는 방법에 대해 알아보겠습니다.

Segue를 이용한 화면 전환

Segue는 스토리보드에서 화면 전환을 구현할 수 있는 방법입니다. 다음은 Segue를 이용한 화면 전환의 예입니다.

  1. 스토리보드에서 첫 번째 화면을 선택하고 Control 키를 누른 상태로 두 번째 화면으로 연결하고자 하는 객체 위로 드래그합니다.
  2. 드래그 중인 동안 나타나는 팝업 메뉴에서 “Show” 옵션을 선택합니다.
  3. Segue가 생성되었습니다. 이제 이 Segue를 이용하여 화면 전환을 구현할 수 있습니다.
import UIKit

class FirstViewController: UIViewController {
    @IBAction func goToSecondVCButtonTapped(_ sender: UIButton) {
        performSegue(withIdentifier: "goToSecondVC", sender: nil)
    }
}

class SecondViewController: UIViewController {
    @IBAction func goBackToFirstVCButtonTapped(_ sender: UIButton) {
        dismiss(animated: true, completion: nil)
    }
}

위의 예제에서는 첫 번째 화면의 버튼을 누르면 performSegue(withIdentifier:sender:) 메서드를 호출하여 Segue를 실행합니다. Segue를 통해 두 번째 화면으로 전환됩니다. 두 번째 화면에서는 버튼을 누르면 dismiss(animated:completion:) 메서드를 호출하여 첫 번째 화면으로 돌아갈 수 있습니다.

화면 전환을 코드로 제어하기

Segue를 사용하지 않고 코드로 화면 전환을 구현하는 방법도 있습니다. 다음은 코드로 화면을 전환하는 예입니다.

  1. 첫 번째 화면에서 두 번째 화면으로 이동하고자 하는 경우, 다음과 같이 코드를 작성합니다.
import UIKit

class FirstViewController: UIViewController {
    @IBAction func goToSecondVCButtonTapped(_ sender: UIButton) {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let secondVC = storyboard.instantiateViewController(withIdentifier: "SecondVC")
        present(secondVC, animated: true, completion: nil)
    }
}

위의 예제에서는 instantiateViewController(withIdentifier:) 메서드를 호출하여 스토리보드에서 두 번째 화면의 ViewController를 가져옵니다. 그리고 present(_:animated:completion:) 메서드를 호출하여 두 번째 화면으로 전환합니다.

  1. 이동한 두 번째 화면에서 첫 번째 화면으로 돌아가고자 하는 경우, 다음과 같이 코드를 작성합니다.
import UIKit

class SecondViewController: UIViewController {
    @IBAction func goBackToFirstVCButtonTapped(_ sender: UIButton) {
        dismiss(animated: true, completion: nil)
    }
}

위의 예제와 동일하게 dismiss(animated:completion:) 메서드를 호출하여 첫 번째 화면으로 돌아갑니다.

정리

위에서는 Segue와 코드를 사용한 화면 전환 방법에 대해 알아보았습니다. Segue를 사용하면 스토리보드에서 직관적으로 화면 전환을 구현할 수 있습니다. 코드로 화면 전환을 구현하면 더 세밀한 제어가 가능합니다. 개발하고자 하는 앱의 요구사항에 맞게 화면 전환 방법을 선택하면 됩니다.

이 포스트는 Swift 5 및 Xcode 11을 기준으로 작성되었습니다.

참고 자료: