Search
✉️

[iOS] 뷰컨트롤러 간 데이터 전달 6가지

부제
카테고리
UIKit
세부 카테고리
컴포넌트
Combine 카테고리
최종편집일
2022/09/20 08:14
작성중
관련된 포스팅
생성 일시
2022/01/02 02:21
태그
목차

프로퍼티에 직접 접근해 data 전달하기

1. 목적지 뷰컨트롤러 객체 생성.

guard let vc = storyboard?.instantiateViewController(identifier: "destinationViewController") as? DestinationViewController else { return } ( 프로퍼티 직접 접근 가능... )
Swift
복사

2. 목적지 뷰컨트롤러 프로퍼티 직접 접근

vc.text = "블라블라"
Swift
복사

3. 생성한 목적지 뷰 컨트롤러 객체로 push

self.navigationController?.pushViewController(vc. animated: true)
Swift
복사

4. 목적지 뷰 컨트롤러의 UI 업데이트

class DestinationViewController: UIViewController { @IBOutlet weak var textLabel: UILabel! var text: String = "" override func viewDidLoad() { super.viewDidLoad() self.textLabel.text = text } }
Swift
복사

Segue 를 이용한 데이터 전달

segue 준비

하나의 세그는 2가지 속성을 갖습니다.
1.
Source : 전환시, 출발지에 해당하는 뷰 컨트롤러
2.
Destination : 도착점에 해당하는 뷰 컨트롤러
세그를 통한 뷰 전환시
prepare() 함수가 호출됩니다
이 함수를 override 해
함수 호출시 데이터 전달과정을 구현해주면 됩니다.

prepare() 함수 override

override func prepare(for segue: UIStoryBoardSegue, sender: Any?) { if segue.destination is DestinationViewController { let vc = segue.destination as? DestinationViewController vc?.text = "블라블라" } }
Swift
복사
1.
identifier 를 식별해 해당 segue 에 맞는 로직 실행
2.
목적지 뷰 컨트롤러의 클래스로 segue.destination 다운캐스팅
3.
프로퍼티에 데이터 할당

Delegation 을 이용해서 데이터 받기

Closure 로 데이터 전달하기