맛있는감귤

[iOS : Swift] Segue 연결하는 3가지 방법 본문

iOS

[iOS : Swift] Segue 연결하는 3가지 방법

맛있는감귤 2017. 1. 19. 02:09

세그웨이 연결 3가지 방법을 소개해드리겠습니다.



기준 

XCode Ver : 8.2  

Swift 3



가위바위보 앱에서 가위, 바위, 보를 각각 다른 방법으로 연결해보겠습니다.



1. 스토리보드에서 직접 연결하기


가장 쉬운 방법으로 control 키를 누른상태에서 버튼을 누르고 다음 view controller에 드래그 앤 드롭을 하면 액션 세그 창이 나오고 원하는 옵션을 선택하여 설정할 수 있습니다.






2. performSegue 메소드를 이용하여 연결하기 (storyboard + code)


이 방법은 첫 번째 view controller에서 두 번째 view controller를 연결한 뒤 생기는 세그웨이의 identifier를 설정해 주고 코드 상에서 설정해주는 방법입니다.


 


먼저 view controller 끼리 연결해 만든 세그웨이를 클릭한 후 Attributes inspector를 보면 위 이미지처럼 identifer를 설정해줄 수 있습니다.


저는 play라고 이름을 지어봤습니다.


그리고 코드상에서 prepare와 performSegue 메소드를 연결해 행동을 정의합니다.


  • prepare

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "play" { let vc = segue.destination as! ResultsViewController vc.userChoice = getUserShape(sender as! UIButton) }

}


  • performSegue

@IBAction private func playPaper(_ sender: UIButton) { performSegue(withIdentifier: "play", sender: sender) }

prepare에서 destination(두번 째 view controller)를 설정해주고 보(paper) 버튼을 클릭했을 때를 performSegue가 실행되도록 정의합니다.




3. 코드로 정의하기


스토리보드를 이용하지 않고 코드상으로 연결하는 방법입니다.


@IBAction private func playRock(_ sender: UIButton) { let vc = self.storyboard?.instantiateViewController

(withIdentifier: "ResultsViewController") as! ResultsViewController

vc.userChoice = getUserShape(sender) present(vc, animated: true, completion: nil) }

withIdentifier의 "ResultsViewController" 부분은 두 번째 view controller의 identifer이고

그 뒤 ResultsViewController는 class이름입니다.