육식하는야채의 개발일지
article thumbnail
[꼼꼼한 재은씨 기본편 Chapter 05] 다른 뷰 컨트롤러와 데이터 주고받기 - 저장소를 사용하여 값을 주고 받기

저장소를 이용해서 값을 주고받는 방식을 비동기 방식이라고 한다.저장소의 역할을 담당할 객체는 데이터의 성격에 따라 다양하게 선택할 수 있다 가장 쉽게 사용할 수 있는 객체로는 AppDelegate 클래스가 있다. AppDelegate는 UIApplication 객체로부터 생명 주기 관리를 위임받아 커스텀 코드를 처리하는 역할을 한다.하지만 이 객체는 앱 전체를 통틀어 하나만 존재하고 여러 뷰 컨트롤러 모두 접근할 수 있으며, 앱 프로세스의 생성/소멸과 운명을 함께 하므로 이 객체에 값을 저장하면 앱이 종료되지 않는 한 값을 계속 유지할 수 있다.SceneDelegate 클래스는 UIWindowSceneDelegate를 상속받아 아래와 같은 역할을 한다. UI 생명주기 관리:씬(scene)의 활성화, 비활..

article thumbnail
[꼼꼼한 재은씨 기본편 Chapter 05] 다른 뷰 컨트롤러와 데이터 주고받기 - 이전 화면으로 값 전달하기

5.3 📌 이전 화면으로 값 전달하기새로운 화면으로 값을 전달하는 방법을 요약1. 값을 받을 새로운 화면을 스토리보드에 추가, 클래스 파일을 작성하여 연결 - VC2라고 부르도록 하겠음2. 코드를 통해 VC2의 인스턴스 참조를 얻어오거나, 인스턴스 참조가 없는 경우 인스턴스를 생성3. 전달하고자 하는 값을 인스턴스의 적절한 프로퍼티에 대입함, 프로퍼티를 미리 정의해야 함4. 화면 전환  레이아웃을 구성하고 전달받을 프로퍼티들을 정의한다. import UIKitclass ViewController: UIViewController { @IBOutlet var resultEmail: UILabel! @IBOutlet var resultIsUpdate: UILabel! @IBOutlet var resultIn..

article thumbnail
[꼼꼼한 재은씨 기본편 Chapter 05] 다른 뷰 컨트롤러와 데이터 주고받기 ( 동기 방식 )

5.1 📌 화면 전환 과정에서의 값 전달 방식뷰 컨트롤러 사이에 값을 주고받는 방식은 두 가지 개념이 있다.1. 뷰 컨트롤러에서 다음 뷰 컨트롤러로 값을 직접 전달하는 방식 ( 동기 방식 )2. 공동 저장소를 만들어 뷰 컨트롤러에서 여기에 값을 저장하고 화면을 이동하면 다음 뷰 컨트롤러에서 저장소를 열어 다시 값을 꺼내오는 공유 방식이 있다. ( 비동기 방식 ) 직접 전달 방식 ( 동기 방식 )뷰 컨트롤러에 직접 값을 전달하는 방식으로 주로 영속성으로 값을 저장할 필요가 없는 화면 전환에 사용된다.화면이 전달될 때 데이터가 함께 전달되거나 화면이 전환되기 전에 데이터가 미리 전달되므로 전달 과정에서 값이 누락될 염려가 없다는 장점이 있다.값이 전달되지 않으면 화면 전환 자체가 이루어지지 않게 구현할 수..

article thumbnail
[꼼꼼한 재은씨 기본편 Chapter 04] 화면 전환 - 전처리 메소드의 활용

4.5.5 📌 전처리 메소드의 활용프로그래밍 코드를 통해 화면을 전환하는 방식은 어렵고 난이도가 높지만 자유도가 높다.그래서 선호도가 높은 방식이다.반면 세그웨이를 이용하여 화면을 전환하는 방식은 쉽고 간단하지만 자유도가 제한된다. 세그웨이를 이용해 화면을 전환하는 과정에서 특별한 처리를 해주어야하는 경우는 어떻게 할까?이 경우 코코아 터치 프레임워크가 세그웨이를 실행하기 전에 전처리 메소드 ( Pre-Process-Method )를 호출한다.세그웨이를 실행하기 전에 값을 저장해 둘 필요가 있거나, 경고창을 띄워주는 등의 처리를 할 경우 전처리 메소드에 내용을 적어놓으면세그웨이가 실행되기 전에 자동으로 실행된다.주의할 점은 이 메소드는 우리가 호출하고 싶을 때 호출되는 것이 아니라 알아서 시스템이 호출..

article thumbnail
[꼼꼼한 재은씨 기본편 Chapter 04] 화면 전환 - 커스텀 세그웨이

4.5.4 📌 커스텀 세그웨이앱을 제작하다보면 기본적인 기능의 세그웨이로는 원하는 기능을 충분히 구현하기 어려운 경우가 있다.이럴 때 UIStoryboardSegue 클래스를 서브클래싱하여 새로운 기능을 갖춘 세그웨이 객체를 정의할 수 있다.이를 커스텀 세그웨이 (Custom Segue)라고 부른다. 커스텀 세그웨이 실습커스텀 세그웨이를 만들기 위해서는 UIStoryboardSegue 클래스를 상속받는 클래스를 만들어야 한다.import UIKitclass NewSegue: UIStoryboardSegue { override func perform() { let srcUVC = self.source let desrUVC = self.destination UIView.transition(from:..

article thumbnail
[꼼꼼한 재은씨 기본편 Chapter 04] 화면 복귀 - Unwind

4.5.3 📌 Unwind - 화면복귀복귀, 되돌아가기 등의 단어들은 Unwind라는 공식용어가 있다.새로운 화면으로 전환하는 것을 Wind라고 하고 Unwind는 작업을 해제한다는 의미로 다시 원래 화면으로 돌아간다고 해석할 수 있다. 일반적으로 Unwind는 dismiss나 popViewController 메소드를 사용하는 방식이 있고Unwind Segue를 이용하는 화면 복귀 방식이 있다. 뷰 컨트롤러 오른쪽에 Exit 아이콘이 있는데 UnWind Segue를 구현할 수 있도록 도와준다.구현하는 방법은 다음과 같다. 1. 뷰 컨트롤러 A에 UIStoryboardSegue 타입의 인자값을 받는 @IBAction 액션 메소드를 정의한다.2. 뷰 컨트롤러 B에 버튼을 만들고 이를 Exit 아이콘에 드래..

article thumbnail
[꼼꼼한 재은씨 기본편 Chapter 04] 화면 전환 - 세그웨이를 이용한 전환

4.5 📌 세그웨이를 이용한 화면 전환세그웨이라고 하는 객체는 스토리보드에서 뷰 컨트롤러 사이의 연결 관계 및 화면 전환을 관리하는 역할을 한다.세그웨이는 뷰 컨트롤러 사이에 연결된 화살표로 표시되는데, 한쪽 방향을 향하는 모습이다.이는 출발지와 목적지가 있다는 뜻이고 한쪽으로만 통행할 수 있다는 뜻이다. 소스코드로 화면 전환을 처리하기 위해서는1. 뷰 컨트롤러에 대한 정보를 읽어온다.2. 인스턴트화 한 후 화면을 전환한다.순서로 화면 전환을 해야 하지만 세그웨이를 이용하면 뷰 컨트롤러의 객체를 생성할 필요도, 뷰 컨트롤러에 대한 정보도 필요 없다. 세그웨이에는 2가지 종류가 있다.1. 출발점이 뷰 컨트롤러 자체인 매뉴얼 세그웨이 (Manual Segue)2. 버튼 등이 출발점인 액션 세그웨이 (Act..

article thumbnail
[꼼꼼한 재은씨 기본편 Chapter 04] 화면 전환 - 내비게이션 컨트롤러를 이용한 화면 전환

4.4 📌 내비게이션 컨트롤러를 이용한 화면 전환내비게이션 컨트롤러 (UINavigationController)는 뷰 컨트롤러의 종류 중 하나로계층적인 성격을 띠는 콘텐츠 구조를 관리하기 위한 컨트롤러이다. 뷰 컨트롤러들의 전환을 직접 컨트롤하고, 앱의 내비게이션 정보를 표시하는 역할을 하며, 화면 전환이 발생하는 뷰 컨트롤러들의 포인터를 스택(Stack)으로 관리하여 원하는 화면에 접근하기 쉽게 한다. 내비게이션 컨트롤러는 항상 콘텐츠 계층 구조의 시작점 역할을 하는 루트 뷰 컨트롤러 (Root View Controller)에 직접 연결된 컨트롤러이기 때문에 화면 UI 상단에 네비게이션 바가 표시된다.화면 전환이 발생해도 상단에 내비게이션 바는 그대로 있다.내비게이션 컨트롤러는 화면에 현재 표시되고 ..