본문 바로가기
2022_iOS 앱 개발자 워크숍/3, App

ViewController 전환(이동) 시 데이터 이동

by 황민우 2022. 1. 21.

이번에는 Table VIew에서 화면 전환 시 데이터도 함께 이동 할 수 있는 방법에 대해 알아보겠습니다.


메인 스토리보드에 Table View를 가진 VC와 첫 번째 VC에서 다음화면으로 넘어갈 VC가 있습니다.

그리고 Navigaion Controller와 Segue를 이용해 Cell을 터치하면 화면이 전환되게 구현했습니다.

즉, 2개의 VC [ ViewController ] 와 Navigation Controller를 준비한 상태입니다.

 

테이블 뷰 생성하는 법 = https://seagreen83.tistory.com/121

화면 전환 하는 법 = https://seagreen83.tistory.com/125

 

 

기본적으로 Table View에는 간단한 배열을 구현한 상태입니다.

 

 

a, b, c 섹션을 터치하면 다음 VC로 넘어가게 되는데,

지금은 3가지 항목 다 동일하게 Label이라는 text가 보이는 화면이 나타납니다.

 


3가지 섹션에 값을 각각 다른 값으로 읽어오기 위해 두 번째 ViewController에 swift 파일 하나를 추가하겠습니다.

[ File > New > File > Cocoa Touch Class > Class 이름 지정 ] 순으로 진행해 파일을 하나 만들어주시면 됩니다.

저는 SecondVC라는 이름으로 만들겠습니다.

 

 

 

다음으로 Label이 있는 VC를 선택한 뒤 identity Inspector에서 방금 만든 swift 파일을 Class로 지정하겠습니다.

 

 

SecondVC Assistant를 실행시켜 두 번째 VC에 Label을 아웃렛으로 추가하겠습니다.

저는 myLabel이라는 이름으로 추가했습니다.


이제 첫 번째 ViewController.swift 파일로 돌아가 코드를 작성해보겠습니다.

Prepare 메서드는 Sugue가 수행될 것을 뷰 컨트롤러에게 알리는 메서드입니다.

ViewContorller를 전환하기 전에 해당 ViewContorller로 데이터를 전송시켜주는? 메서드라고 생각하면 될 것 같습니다.

코드 내용을 보시면,

 

- segue.destinaion 객체를 SecondVC 타입으로 다운캐스팅 할 수 있을 때,

  cell.textLabel에 저장된 text 값을 nextViewContorller의 textToSecondVC로 보내줍니다.

- 38 번째 줄인 cell에 대한 값을 전송해주는 코드를 작성해야 cell.textLabel에 대한 값을 접근 할 수 있습니다.

 

 

 

 

그럼 다시 SecondVC.swift 파일로 넘어와 첫 번째 VC에서 넘겨지는 값을 받는 코드를 작성해보겠습니다.

 

- 20 번째 줄에서는 넘겨지는 데이터 값을 저장할 textToSecondVC라는 변수를 선언했습니다.

- viewWillAppear 메서드를 사용해 view가 보여지기 전에 textToSecondVC 변수 값을 myLabel의 text값으로 저장합니다.

 


실행화면

 

각 섹션에 따른 배열의 값이 Label의 text값으로 저장된 것을 확인할 수 있습니다.

textToSecond에 저장된 값을 활용해 switch/case 문으로 다양한 기능들을 구현 할 수 있을것 같습니다. :) 

댓글