Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
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
Tags
more
Archives
Today
Total
관리 메뉴

iOS 개발일지

0721 새싹 14회차 정리 본문

SeSAC iOS 데뷔과정 2기

0721 새싹 14회차 정리

Lia's iOS 2022. 7. 21. 22:19
iOS 앱 개발자 데뷔 과정 14회차

 

 

 

 

#0. Memo

 

 화면전환 코드로 구현하기 (feat. NavigationController)

간단하게 정리하면 아래와 같은 과정의 코드를 작성한다.

스토리보드 찾기 ➡️ 뷰컨트롤러 찾기 ➡️ 화면 전환하기

여기서 bundle은 같은 xcode 파일 내에서는 nil로 작성한다.

 

그리고 이렇게 present 화면 전환 스타일을 설정할 수도 있다.

 

뷰컨트롤러에 네비게이션 컨트롤러를 임베드해 사용할 수도 있다.

2.5번의 저 과정을 거치면 전환되는 화면이 rootViewController가 된다.

 

마지막으로, didSelectRowAt 메서드를 통해 셀이 선택되었을 때 화면을 push시키는 코드이다.

이렇게 push를 통해 화면을 전환했을 경우 뒤의 화면들은 쭉 네비게이션 컨트롤러로 연결된다. present는 끊긴다.

옵셔널 체이닝을 사용했기 때문에, 네비게이션 컨트롤러가 아니라면 코드가 실행되지 않는다.

 

 

 

- NavigationBar Item 코드로 구현하기

NavigationController를 통한 화면 전환에 성공했으니, 이번엔 뒤로가기 버튼을 만들어보자.

Bar Button Item을 구현하는 것은 화면 전환보다 간단하다.

 

우선, 사라질 화면의 클래스 내에 버튼을 눌렀을 때 동작할 함수를 만든다.

함수 내에는 self.dismiss(animated: true) 라고 작성했다.

그리고 viewDidLoad에서 네비게이션 아이템 설정해주면 되는데 action에는 #selecor로 위에서 만든 함수를 호출하면 된다.

#selector는 objective-c 코드이므로 #selector로 호줄할 함수 앞에는 @ocjc를 적어줘야 한다.

여기서 style과 target은 거의 고정적으로 해당 값이 사용된다.

 

 

 

- TrimmingCharacters(in:  )

특정 문자를 제거하는 메서드이다.

whitespaces 또는 whitespacesAndNewlines 를 선택하면 문자열 내의 공백을 제거할 수 있다.

 

 

 

 

#1. Checklist

- Optional Binding

옵셔널을 안전하게 해제하기 위해서는 조건문을 통해 옵셔널 바인딩을 해야 한다.

상수에 값을 넣는 것으로 nil인지 검사할 수 있으며, 동시에 다른 조건을 추가하는 것도 가능하다.

if let 구문을 사용할 경우 옵셔널 바인딩이 성공했을 경우의 코드를 적고, else 구문을 통해 사용자에게 실패했을 때의 알림을 줄 수 있다.

 

guard 구문은 조건 뒤에 오는 else 구문을 통해, 바인딩에 실패했을 경우 return으로 함수 자체를 종료시킨다.

이를 Early Exit이라고 하며 사용자에게 알림을 주고 싶을 경우에는 이 return보다 앞에 코드를 작성해야 한다.

guard 구문이 true일 경우 else 구문을 무시하고 조건문을 탈출하며, 밑에 있는 코드를 순차적으로 실행시킨다.

guard 문은 else 내부에서만 조건문이 실행되기 때문에 guard let으로 초기화한 변수를 코드 블럭 밖에서 사용할 수 있다.

 

 

- Property

Instance Property중 저장 프로퍼티,지연 저장 프로퍼티, 타입 프로퍼티에 대해 알아보자.

저장 프로퍼티는 가장 자주 사용하는 기본적인 프로퍼티이다.

선언과 동시에 초기화하거나, init으로 초기화하거나, 옵셔널로 선언해 nil로 초기화한다.

 

지연 저장 프로퍼티는 저장 프로퍼티가 초기화 되는 시점을 지연시켜주는 프로퍼티이다.

초기화를 통해 클래스의 인스턴스가 생성되더라도, 저장 프로퍼티 앞에 lazy가 선언되어 있다면 해당 프로퍼티는 초기화 되는 시점에 초기화가 된다.

 

타입 저장 프로퍼티는 인스턴스마다 다른 값을 가질 수 있으며, 인스턴스가 생성되었을 때 프로퍼티 사용이 가능하다.

하지만 타입 프로퍼티는 각각의 인스턴스가 아닌 타입 자체에 속하는 프로퍼티로, 인스턴스 생성 여부와 관계 없이 사용할 수 있다.

static으로 선언을 하며 lazy 키워드를 붙이지 않더라도 lazy로 동작한다.

static을 사용하기 위해서는 처음부터 값을 가지고 있어야 한다.

 

 

 

 

- ViewController Transition

#0. Memo 화면전환 코드로 구현하기 (feat. NavigationController) 참고

#0. Memo NavigationBar Item 코드로 구현하기 참고

 

 

 

 

#2. Assignment

- 도서 프로젝트 화면 전환 구현해보기
과제 진행하며 헷갈렸던 점
1. present 이후의 화면은 navigationController가 끊기니 다시 연결해줘야 하는데, 끊긴 화면이 아닌 그 전 화면에서 연결한 후 화면을 전환해야 한다. 미리미리 해야 함!
2. push-pop / modal(present) - dismiss 꼭 기억하기! push로 연결한 화면은 dismiss 하지 못한다.

 

 

 

 

# 그 외

(2...6).contains(value.count) 와 같은 형식으로 작성하면, 글자수가 2~6자일 때만 true가 반환된다.

 

Cell 파일 내부에 static let으로 셀의 identifire을 선언해 놓으면, 컨트롤러에서 자동완성으로 불러올 수 있다.

같은 방법으로 VC 파일 내부에서도 VC indentifire static 선언해서 있다.

 

'SeSAC iOS 데뷔과정 2기' 카테고리의 다른 글

0724 1차 평가과제 (3주차)  (0) 2022.07.24
0722 새싹 15회차 정리  (0) 2022.07.22
0720 새싹 13회차 정리  (0) 2022.07.20
0719 새싹 12회차 정리  (0) 2022.07.19
0718 새싹 11회차 정리  (0) 2022.07.18