Swift를 사용하여 iOS 앱을 개발하다보면 화면을 전환하는 기능을 구현해야 할 때가 있습니다. 이번 포스트에서는 Swift로 화면을 전환하는 방법에 대해 알아보겠습니다.
Segue를 이용한 화면 전환
Segue는 스토리보드에서 화면 전환을 구현할 수 있는 방법입니다. 다음은 Segue를 이용한 화면 전환의 예입니다.
- 스토리보드에서 첫 번째 화면을 선택하고
Control
키를 누른 상태로 두 번째 화면으로 연결하고자 하는 객체 위로 드래그합니다. - 드래그 중인 동안 나타나는 팝업 메뉴에서 “Show” 옵션을 선택합니다.
- 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를 사용하지 않고 코드로 화면 전환을 구현하는 방법도 있습니다. 다음은 코드로 화면을 전환하는 예입니다.
- 첫 번째 화면에서 두 번째 화면으로 이동하고자 하는 경우, 다음과 같이 코드를 작성합니다.
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:)
메서드를 호출하여 두 번째 화면으로 전환합니다.
- 이동한 두 번째 화면에서 첫 번째 화면으로 돌아가고자 하는 경우, 다음과 같이 코드를 작성합니다.
import UIKit
class SecondViewController: UIViewController {
@IBAction func goBackToFirstVCButtonTapped(_ sender: UIButton) {
dismiss(animated: true, completion: nil)
}
}
위의 예제와 동일하게 dismiss(animated:completion:)
메서드를 호출하여 첫 번째 화면으로 돌아갑니다.
정리
위에서는 Segue와 코드를 사용한 화면 전환 방법에 대해 알아보았습니다. Segue를 사용하면 스토리보드에서 직관적으로 화면 전환을 구현할 수 있습니다. 코드로 화면 전환을 구현하면 더 세밀한 제어가 가능합니다. 개발하고자 하는 앱의 요구사항에 맞게 화면 전환 방법을 선택하면 됩니다.
이 포스트는 Swift 5 및 Xcode 11을 기준으로 작성되었습니다.
참고 자료:
- Apple Developer Documentation - UIStoryboardSegue
- Hacking with Swift - How to move to the next UITextField when the user presses return