11. 스토리보드에서 Segue 사용하기 (2)
페이지 정보
작성자 관리자 댓글 0건 조회 4,076회 작성일 20-01-04 11:18본문
11. 스토리보드에서 Segue 사용하기 (2)
이번에는 화면 전환시 데이터를 전달하는 방법을 실습하겠다.
Scene과 뷰 컨트롤러 연결하기
- 현재 2개의 화면을 가지고 있지만, 뷰 컨트롤러는 하나밖에 없다.
- 화면2에서 어떠한 기능을 수행하기 위해서는 뷰컨트롤러가 필요하다.
- 먼저 뷰 컨트롤러를 위한 파일을 프로젝트에 추가한다.
- 프로젝트 내비게이터 화면 상단의 Storyboard 타깃을 Ctrl를 클릭한 후 New File을 선택한다.
Group : Storyboard 를 선택한다.
프로젝트 네비게이터 패널에서 Main.storyboard 을 선택하면, 화면2의 ViewController 버튼을 선택한다.
Identity Inspector에서 Class를 Scene2ViewController로 변경한다.
화면2는 뷰 컨트롤러와 필요한 기능을 구현하기 위한 소스파일을 가지게 된다.
화면들 사이의 데이터 전달
- 스토리보드로 작업할 때 가장 일반적으로 요구되는 것들 중 하나는 하나의 화면에서 다른 화면으로 전환되는 동안 데이터를 전달하는 것이다.
- prepare 메서드를 이용하여 전달할 수 있다.
ViewControllor.swift 파일을 수정한다.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var scene1Label: UILabel!
var msg: String = ""
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
msg = "hello"
print("Scene 1 : ",msg)
}
@IBAction func returned (segue : UIStoryboardSegue){
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
/*
if seque.identifier == "segueScene2VC" {
}
*/
if segue.destination is Scene2ViewController {
let vc = segue.destination as! Scene2ViewController
vc.msg = self.msg
}
}
}
prepare 메소드에서 segue를 찾고, 화면2의 변수(msg)에 화면1에서 생성한 변수(msg="hello")를 전달한다.
Scene2ViewControllor.swift 파일을 수정한다.
import UIKit
class Scene2ViewController: UIViewController {
var msg: String = ""
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
print("Scene 2 : ",msg)
}
}
Scene2ViewControllor.swift 에 msg 변수를 추가한다.
viewDidLoad 메소드에 print("Scene 2 : ",msg)를 이용하여 msg변수가 어떻게 바뀌는가를 확인한다.
어플리케이션 실행하기
실행후 메세지 출력창을 확인한다.
화면1에서 화면2로 전환 후, 메세지 출력창을 확인한다.
msg 변수의 hello가 화면2의 msg 변수로 전달된 것을 확인할 수 있다.
프로그램으로 스토리보드 segue 호출하기
- 화면의 컨트롤에서 segue를 호출하도록 구성할 수도 있지만, 애플리케이션 코드에서 호출하는 것도 가능하다.
- 식별자를 segue에 할당하고, 그 segue를 실행하고자 하는 뷰 컨트롤러의 performSegue(withIdentifier: "segueScene2VC", sender: self)메소드를 호출하면 된다.
- Segue의 식별자를 설정하기 위해서는 스토리보드 캔버스에서 segue를 선택하고 애트리뷰트 인스펙터를 열고, Identifier필드에 값을 설정한다.
ViewController.swift 파일에 아래와 같은 함수를 추가한다.
func goScene2 () {
performSegue(withIdentifier: "segueScene2VC", sender: self)
}
goScene2 메소드를 호출하면, 화면2로 바뀌게 된다.
댓글목록
등록된 댓글이 없습니다.