일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 직장인인강
- 패스트캠퍼스후기
- enum
- 문자열 보간법
- 패스트캠퍼스
- Git
- TableView
- beginAsyncWrite
- 옵셔널 체이닝
- 독학
- 30개프로젝트로배우는iOS앱개발withSwift초격자패키지Online
- ios
- cancelAsyncWrite
- 열거형
- Background
- 프로퍼티 관찰자
- RawValue
- userDefaults
- 직장인자기계발
- 패캠챌린지
- SeSAC
- Threading
- Optional Chaining
- swift
- 인스펙터
- Realm
- 함수
- switch
- 기본문법
- xcode
- Today
- Total
아삭아삭 iOS 개발
[Swift 독학] 패스트캠퍼스 챌린지 49일차_ 화면간 데이터 전달방법 본문
<화면간 데이터 전달방법 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에 표시를 해주겠다
본 게시물은 개인 공부 기록용이므로 내용에 오류가 있을 수 있습니다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Swift' 카테고리의 다른 글
[Swift 독학] 패스트캠퍼스 챌린지 최종 후기_끝!! (0) | 2022.03.23 |
---|---|
[Swift 독학] 패스트캠퍼스 챌린지 50일차_ UIStackView 및 리소스 (0) | 2022.03.14 |
[Swift 독학] 패스트캠퍼스 챌린지 48일차_ ViewController Life Cycle (0) | 2022.03.12 |
[Swift 독학] 패스트캠퍼스 챌린지 47일차_화면 전환 구현 (0) | 2022.03.11 |
[Swift 독학] 패스트캠퍼스 챌린지 46일차_화면 전환 방법 (0) | 2022.03.10 |