본문 바로가기

Codes Travel/iOS Boost Course #2019

세그 (Segue) ?

안녕하세요 :)

iOS 개발자 리치(rich_iosdev)입니다.


공유해드릴 내용은 세그(Segue) 입니다.

세그(Segue)는 뷰 컨트롤러 사이의 화면 전환을 위해서 사용하는 객체입니다. 

스토리보드 상에서 화면 전환은 세그(Segue)를 활용 할 수 있습니다. 물론, 코드로도 화면 전환이 가능하지만, 스토리보드 상에서는 세그(Segue)를 활요하면 훨씬 더 간편하고 빠르게 화면 전환 기능을 구현할 수 있는 것 같네요.

 

먼저 UIKit에 있는 UIStoryboardSegue 클래스에 대해서 확인해보겠습니다

 

세그(Segue) 오브젝트는 화면 전환을 수행하는 뷰 컨트롤러들의 정보를 가지고 있습니다. 세그(Segue) 가 트리거(Trigger) 되면 화면 전환이 되기 전에 스토리보드의 runtime이 화면 전환을 수행하는 뷰 컨트롤러의 prepare() 메소드를 호출합니다. 이 prepare() 메소드는 다음 뷰 컨틀롤러의 화면에 보여줄 데이터를 넘겨주는 역할을 합니다. 세그(Segue) 오브젝트를 직접 생성하지 마세요. 대신에 스토리보드 runtime에서 뷰 컨트롤러 간의 화면 전환이 일어날 때, 세그(Segue) 오브젝트를 생성합니다.

 

물론, 코드로도 performSegue(withIdentifier:sender:) 함수를 통해서 세그 오브젝트를 호출 가능합니다. 대신에 코드로 구현한 경우, Interface Builder에서는 사용할 수 없습니다.

 

먼저, 스토리보드 상으로 세그(Segue)를 만들어 봤습니다

1. 두번째 뷰 컨트롤러를 만들고 첫번째 뷰 컨트롤러에 화면 전환을 위한 버튼을 그립니다.

 

2. 버튼을 클릭한 상태에서 다음 뷰 컨트롤러로 드래그하면, 아래 이미지와 같이 ActionSegue를 선택할 수 있는 옵션 윈도우가 뜨고 단순하게 show를 선택했습니다.

3. 2번 단계를 수행하고 나면 뷰 컨트롤러 사이에 표시된 세그(Segue)를 확인 할 수 있습니다

 

코드로 호출하는 경우를 확인하기 위해서 스토리보드에 생성한 세그를 다른 버튼을 통해서 호출해봤습니다.

Button1에 생성한 세그(Segue)를 선택하고 우측에 나타난 Storyboard Segue 설정 값 중 Identifier를 입력해줍니다. 저는 "SecondVC" 라고 넣었습니다 

Button2를 첫번째 뷰 컨트롤러에 생성합니다.

마지막으로 코드를 작성해봅니다.

 

Target-Action으로 button2Action() 함수를 먼저 연결해주고

해당 함수 안에 아래와 같이 performSegue()를 구현해줍니다.

 

* Target-Action에 대한 설명을 이 포스팅을 참고해주세요! => https://tryyourbest5.tistory.com/323

 

이때 중요!!

withIdentifier 파라미터를 반드시 아까 입력해준 Identifier인 "SecondVC"로 입력해야 해당 세그(Segue)를 호출하게 됩니다.

import UIKit

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

    @IBAction func button2Action(_ sender: Any) {
        performSegue(withIdentifier: "SecondVC", sender: self)
    }
}

사실 개인적으로 스토리보드 세그(Segue)를 많이 활용하는 편은 아니라서,

조금 이해가 부족했던 부분이 이제는 정리가 되네요.

 

잘못된 내용이 있다면 댓글을 달아주세요!

확인해서 바로 수정하도로 하겠습니다 :)

 

끝까지 읽어주셔서 정말 감사합니다.

 

Reference

 

[부스트코스] iOS프로그래밍

세그(Segue)란?

https://www.edwith.org/boostcourse-ios/lecture/16893/

 

[LECTURE] 1) 세그(Segue)란? : edwith

세그(Segue)란? iOS 애플리케이션에서 여러 화면을 사용할 경우, 화면의 전환을 위해 사용되는 세그에 대해 배워봅시다. 학습 목표 1. 세그(Segue)에 대해 알아봅니다. ... - 부스트코스

www.edwith.org

'Codes Travel > iOS Boost Course #2019' 카테고리의 다른 글

Codable?  (0) 2019.08.05
UITableView - DataSource & Delegate  (0) 2019.08.05
뷰의 재사용 이란?  (0) 2019.08.01
UITableViewCell (테이블 뷰 셀)?  (0) 2019.08.01
UITableView ( 테이블 뷰 )?  (0) 2019.07.31