관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 2. Storyboard로 UI 구현 기본기 - Storyboard로 UI 구현 기본기 - segue, Action Segue, Manual Segue (세그웨이) 본문

iOS 응용 (swift)

[iOS - swift] 2. Storyboard로 UI 구현 기본기 - Storyboard로 UI 구현 기본기 - segue, Action Segue, Manual Segue (세그웨이)

jake-kim 2023. 3. 1. 22:09

* Storyboard로 UI 구현 기본기 목차 참고

Segue란?

  • 사전적인 segue['세그웨이'] 뜻: to move easily and without interruption from one piece of music, part of a story, subject, or situation to another
  • swift에서는 뷰 컨트롤러 사이 또는 화면 전환의 트리거인 버튼을 연결할때 생기는 화살표를 segue object라고 명칭
  • segue를 사용하면 어떤 코드도 필요없이 바로 사용한다는 특징이 존재

https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/UsingSegues.html

  • Segue의 종류는 두 가지
    • Action Segue - 별도의 코드 없이 바로 화면전환
    • Manual Segue - storyboard에서 segue 화면전환을 미리 정의하고, 이 segue를 코드 베이스에서 불러서 언제든지 사용할 수 있도록 하는 것

Action Segue

  • 별도의 코드 없이 바로 화면전환
  • storyboard에서 버튼을 선택하고 ctrl + 드래그하여 옆에 있는 ViewController에 놓으면 Action Segue 옵션 선택이 가능

Manual Segue

  • storyboard에서 segue 화면전환을 미리 정의하고, 이 segue를 코드 베이스에서 불러서 언제든지 사용할 수 있도록 하는 것
  • 화면전환할 viewController의 dock 바의 첫 번째 아이콘 클릭 + ctrl + 드래그하여 끌면 Manual Segue 옵션이 있고 여기서 선택

  • 코드에서 화면전환할때 segue 구분을 segue ID를 가지고 구분하므로 storyboard에서 segue의 identifier 입력

  • 코드 베이스에서 @IBAction func 키워드로 segue 관련 메소드를 만들고 여기서 viewController에 내장된 performSegue(withIdentifier:sender:) 호출
    • moveToVC2 라는 메소드 생성
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func moveToVC2(_ sender: Any? = nil) {
        performSegue(withIdentifier: "segue1", sender: self)
    }
}
  • 테스트를 위해 viewDidAppear에서 3초 후 이 메소드를 호출
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    
    DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
        self.moveToVC2()
    }
}

완성

* 전체 코드: https://github.com/JK0369/ExSegue

* 참고

https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/UsingSegues.html

https://dictionary.cambridge.org/ko/%EC%82%AC%EC%A0%84/%EC%98%81%EC%96%B4/segue

Comments