티스토리 뷰

iOS

[iOS] 세궈(Segue) 톺아보기

국산 앨런 2019. 8. 1. 21:27

전 포스팅에서 화면전환에 대해서 살짝 다뤘었는데요

 

(모달 present, 네비게이션 push)

 

이번 포스팅에서도 화면전환에 대해서 다루려고 합니다 !

 

Segue (세그)

Segue는 스토리보드에서 뷰 컨트롤러 사이의 화면전환을 위해 사용하는 객체입니다.

 

기존에 제가 보였드렸던 방식은 거의 코드로 (present, push) 했었는데 Segue의 경우

 

별도의 코드 없이도 스토리보드에서 세그를 연결하여 뷰 컨트롤러 사이의 화면전환을 구현할 수 있습니다.

 

UIStoryboardSegue Class

UIStoryboardSegue 클래스는 UIKit에서 사용할 수 있는 표준 화면전환을 위한 프로퍼티와 메서드를 포함하고 있습니다.

 

UIViewController의 performSegue(withIdentifier:sender:)메서드를 사용하여 세그 객체를 코드로 실행할 수 있습니다.

 

그리고 화면전환이 일어나기 직전에

 

뷰 컨트롤러의 prepare(for:sender:) 메서드를 사용하여 새로 보여지는 뷰 컨트롤러에 데이터를 전달할 수 있습니다.

 

주요 프로퍼티

  • var source: UIViewController : 세그에 전환을 요청하는 뷰 컨트롤러입니다.
  • var destination: UIViewController : 전환될 뷰 컨트롤러입니다.
  • var identifier: String? : 세그 객체의 식별자입니다.

주요 메서드

  • func perform() : 뷰 컨트롤러의 전환을 수행합니다.

 

Segue를 사용하는 방식에는 크게 2가지가 있습니다.

 

  • 특정 뷰(Action이 가능한)에서 발생시키는 방법 
  • 전체 UIViewController 에서 발생시키는 방법

UIViewController전체

 

 

컴포넌트

 

 

 

 

연결된 모습이고 저 중간에 화살표를 클릭하면 속성이 나오는데

 

Identifier로 컨트롤러 단에서 세그를 식별, 구분할 수 있습니다.

 

@IBAction func buttonAction(_ sender: UIButton){
	performSegue(withIdentifier: "next", sender: nil)
}

 

UIButton에 Segue를 연결시킨 경우와 위의 코드처럼 Action을 연결해준 다음 performSegue(...) 를 실행하는 경우의

 

결과는 정확히 일치합니다.

 

실제로 돌려봐야죠?

 

그전에

 

 

 

식별하기 위해 두번째 뷰컨의 배경색을 바꾸고 넘어온 데이터를 확인하기 위한 라벨을 하나 달아주었습니다.

 

//ViewController.swift
//Segue 쏘는 쪽
...

@IBAction func buttonAction(_ sender: UIButton){
	performSegue(withIdentifier: "next", sender: nil)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
	if segue.identifier == "next" {
		if let destiVC = segue.destination as? SecondViewController{
			destiVC.labelText = "Data~!"
		}
	}
}

...

 

//SecondViewController.swift
//Segue 받는 쪽
...

var labelText: String?
@IBOutlet weak var label: UILabel!
    
override func viewWillAppear(_ animated: Bool) {
	super.viewWillAppear(animated)
        
	label.text = labelText
}

...

 

 

 

 

 

참고 : https://www.edwith.org/boostcourse-ios/lecture/16894/

'iOS' 카테고리의 다른 글

[iOS] Photos 프레임워크 톺아보기  (2) 2019.08.10
[iOS] Codable 톺아보기  (0) 2019.08.01
[iOS] UITableView 톺아보기 - 3  (0) 2019.08.01
[iOS] UITableView 톺아보기 - 2  (0) 2019.08.01
[iOS] UITableView 톺아보기 - 1  (0) 2019.08.01
댓글
공지사항