안녕하세요 :)
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)란?
'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 |