0722 새싹 15회차 정리
iOS 앱 개발자 데뷔 과정 15회차
#0. Memo
- ViewController간 데이터 전달
1. 정보를 받을 공간(프로퍼티) 생성 - 전환 후 화면
2. 화면을 전환하기 전 data를 넘기는 코드 작성 - 전환 전 작업
3 . viewDidLoad에서 받은 데이터를 뷰에 표현 - 전환 후 화면
전달할 정보가 적다면 특정 정보만 전달하는 것도 가능하지만, 코드의 재활용 등을 생각했을 때에는 한번에 전달하는게 좋은 것 같다.
- Window rootViewController
사용자에게 딱 한번만 보여주고 싶은 화면이 있을 수 있다.
가장 이해가 쉬운 로그인 화면으로 예를 들어보면, 처음 앱을 실행했을 땐 로그인 화면이 뜨지만 그 다음부터는 메인 화면이 첫 화면이 된다.
우선 SceneDelegate에서 rootViewController(여기서는 한 번만 보여줄 화면)을 설정한다.
그리고 UserDefaults에 Bool 타입을 저장해서 사용자가 이 화면을 본 적이 있는지, 없는지를 조건문으로 판단한다.
이것을 응용하면 이번에는 초기화 버튼을 만들어 볼 수도 있다.
let sb 위의 두줄의 코드는 조금 어려워서 이해가 어렵지만, 간단하게 말하자면 sceneDelegate에 접근하기 위한 절차라고 생각하면 된다.
마지막에는 꼭 makeKeyAndVisible을 호출해야 화면이 반영이 된다.
#2. Assignment
주말 평가과제 화이팅!!!!!!!!
# 그 외
- placeholder를 String? 타입으로 선언하더라도 오류가 뜨지 않는 이유
Placeholder 자체가 옵셔널이기 때문이다.
하지만 String Interpolation이라면 오류가 뜨기 때문에 별도의 코드가 필요하다.
- currentTitle이 nil이 뜨는 이유
Button Style이 Plain이면 sender.currentTitle이 nil로 뜬다.
- 지연 저장 프로퍼티
lazy를 사용할 땐 선언할 프로퍼티와 접근할 인스턴스를 모두 var로 선언해야 한다.
호출을 할 때 값을 받는(값이 바뀌는) 구조이므로 호출해서 사용하기 전까지는 값이 nil이다.
- A ?? B
A를 실행할건데 혹시 A가 nil일 경우 B를 써라~ 라는 뜻!
- 스토리보드에서는 있는데, 시뮬레이터에는 없어요! (ex. NavigationBar)
스토리보드에 속지 말자!
스토리보드는 한눈에 뷰의 구성을 보기 쉽지만, 코드를 실행하며 바뀌는 부분도 많기 때문에 곧이곧대로 믿으면 안된다.