아삭아삭 iOS 개발

[Swift 독학] 패스트캠퍼스 챌린지 49일차_ 화면간 데이터 전달방법 본문

Swift

[Swift 독학] 패스트캠퍼스 챌린지 49일차_ 화면간 데이터 전달방법

바닐라머스크 2022. 3. 13. 20:09

 

 

<화면간 데이터 전달방법 3가지>
1)
코드로 구현된 화면 전환 방법에서 데이터 전달
2)
세그웨이로 구현된 화면 전환 방법에서 데이터 전달
3) delegate
패턴을 이용하여 이전 화면으로 데이터 전달

 

 

 

  • 코드로 push, 코드로 present 로의 데이터 전달
     :
    인스텐시에이트 컨트롤럴를 이용해서 스토리보드애ㅔ 있는 컨트롤러가 인스턴스화되면 프로퍼티에 접근해서 데이터를 전달
    1)
    화면에 라벨 추가
    2)
    라벨을 아웃렛 변수로 추가
    3)
    해당 변수를 name: String? 으로 변수명명
    4)
    컨트롤러를 인스턴스화 해주는 메서드에 전환되는 화면의 컨트롤러 클래스 타입으로 다운캐스팅

     : as? CodePresentViewController 추가
     -> 타입에 맞는 컨트롤러 클래스로 다운캐스팅을 하게 되면 앞선 3)에서 정의한 name 프로퍼티로 각각 접근할 있음 => 그럼 다른 화면으로 push, present 되기 전에 name 프로퍼티에 값을 넘겨주면 전환된 화면으로 데이터를 전달할 있음

 

 

 

* 전환된 화면에서 이전 화면으로 데이터를 전달하는 방법
  : delegate 패턴으로코드로 present’->’ 컨트롤러 데이터 전달 실습  ::: 가장많이 쓰이는 방법
1) codepresent 코딩화면에 프로토콜 하나 추가, 프로토콜 타입의 변수 하나 추가
2) codepresent 코딩화면에 dismiss 함수 이전위치에이전화면으로 전달할 데이터를 senddata 파라미터에 적어줌
  -> 데이터를 전달받은 컨트롤러에서 senddata delegate 채택하고, delegate 위임받게 되면, senddata delegate 프로토콜 채택한 이전 화면  컨트롤러에서 정의된 senddata함수가 실행되게

 

<delegate 패턴>

- delegate = 위임자
-
위임자를 갖고 있는 객체가 다른 객체에게 자신의 일을 위임하는 형태
- delegate
사용할때는 delegate변수앞에 ‘weak’라는 키워드를 붙여줘야
  (
만약 안붙여주면 강한 순환참조가 걸려서 메모리 누구 발생 가능

 

 

* 세그웨이(segue push) 구현된 화면전환 방법에서 데이터를 전달하기
  :
전환되는 뷰컨트롤러의 인스턴스로 접근해서 프로퍼티로 데이터를 전달
1) ‘segue
push’화면에 라벨하나 추가해서, 해당화면 코드내에 프로퍼티 하나 정의
2) ‘
컨트롤러화면
<
세그웨이로 구현된 화면전환 방법에서 전환되는 화면의 값을 전달하기 위한 가장 좋은 방법은전처리, prepare’메서드입니다.>
- prepare
메서드는 override화면 세그웨이를 실행하기 직전에 시스템에 의해 자동으로 호출됩니다.
- prepare
메서드를 오버라이드 시켜주면 세그웨이를 실행하기 직전에, 시스템에 의해서 오버라이드된 prepare 메서드가 자동으로 호출되게
-
메서드 안에 전환하려는 컨트롤러의 인스터스를 가져와보겠다.
 : segue.destination
프로퍼티를 이용해 가져올 있음.
-
해당 프로퍼티를 다운캐스티 해줌
3) segue
push’화면에서 전달받은 데이터를 nameLabel 표시를 해주겠다

 

 

 

 

본 게시물은 개인 공부 기록용이므로 내용에 오류가 있을 수 있습니다.

 

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.