<--! [iOS] Segue에 identifier 설정해서 버튼에 따른 화면전환 및 텍스트 출력 -->

[iOS] Segue에 identifier 설정해서 버튼에 따른 화면전환 및 텍스트 출력

필그램

·

2017. 9. 8. 06:34


화면간 이동을 컨트롤 하는것이 세그웨이(Segue)이다.

이 세그웨이를 위한 메소드는 prepare()이다.


이전 화면이동 블로그에 버튼 2개를 추가하고 '버튼1', '버튼2', '버튼3' 이라고 한다.

각 버튼과 연결된 화살표(segue)를 선택한뒤 왼쪽에 'identifier'에 btn1, btn2, btn3를 각각 입력한다. 이 identifier가 각 버튼을 누른것을 인식하는 확인문자 이다.


다음 두번째 화면은 내용을 출력할 label을 하나 추가한다.




두번째 화면의 레이블을 MyViewController.swift의 화면에 연결한다. 



아래처럼 연결된 뒤, var text:String = "" 을 입력




이제, ViewController.swift 소스로 이동해서 맨아래에 prepare를 입력하고 메소드를 선택한다. 위에서 말한것 처럼 segue를 이동하는 메소드 이다.



메소드 안에 아래 소스 처럼 내용을 입력한다. newView는 출력될 화면을 말한다.



위 내용의 코드 입력 중간을 캡쳐한것이다.

다음, 2번째 파일 ViewDidLoad에서  myLabel.text = text  를 입력한다.

세그웨이에서 받은 텍스트를 출력하는 것이다. 



아래는 결과물의 테스트 화면!




소스코드는 아래와 같다.

[ViewController.swift]


import UIKit


class ViewController: UIViewController {


    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

    }


    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

    

    //추가

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        let newView = segue.destination as! MyViewController

        

        if(segue.identifier == "btn1") {

            newView.text = "버튼1 눌러짐"

        }


        else if(segue.identifier == "btn2") {

            newView.text = "버튼2 눌러짐"

        }

        

        else if(segue.identifier == "btn3") {

            newView.text = "버튼3 눌러짐"

        }

        

    }



}



[MyViewController.swift]

import UIKit


class MyViewController: UIViewController {

    

    //아래 추가

    var text:String = ""

    

    @IBOutlet weak var myLabel: UILabel!


    override func viewDidLoad() {

        super.viewDidLoad()


        myLabel.text = text

        

    }


    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

    

}















반응형