🖤 학습목표 돌아보기
학습목표
[ ] Xcode를 활용하여 프로젝트를 생성하고 실행하는 방법을 설명할 수 있다.
[ ] Xcode를 사용하여 코드를 편집하고 디버깅하는 방법에 대해서 설명할 수 있다.
[ ] 스토리보드/인터페이스 빌더를 사용해서 UI를 구성하는 방법을 설명할 수 있다.
[ ] UIKit 프레임워크에 포함된 View와 ViewController들에 대해서 알고 특징을 설명할 수 있다.
[ ] 사용자의 입력을 받는 View의 종류를 알고 설명할 수 있다.
[ ] 사용자에게 데이터를 보여주는 View의 종류를 알고 설명할 수 있다
[] UITableView의 활용 목적을 설명할 수 있다.
[ ] UITableView를 사용하여 데이터 보여주는 방법을 설명할 수 있다.
1️⃣ Xcode를 활용하여 프로젝트를 생성하고 실행하기
1. 프로젝트 생성
Xcode 실행 -> Create New Project 클릭 -> iOS App 클릭 ->Product Name 설정, Interface 설정(Storyborard), 언어 설정(Swift)
2. 실행하기
좌측 내비게이션바 상단에 재생 버튼을 클릭하면 앱이 실행된다.
2️⃣ 코드를 디버깅하는 방법
1. 코드 디버깅하는 방법
왼쪽 행 번호를 클릭하여 breakpoint를 추가하거나,
디버깅하고싶은 코드를 아래 코드 안에 넣는다.
DispatchQueue.main.async {
//
}
3️⃣ 스토리보드/인터페이스 빌더를 사용해서 UI를 구성하는 방법
1. UI 구성
Main.storyborad에서 UIViewController에 UIViewComponents를 drag&drop하여 UIView구성하기
2. UI Components를 코드에 연결
Ctrl키를 누른 상태로 코드에 드래그하여 Outlet 또는 Action으로 연결한다.
4️⃣ UIKit 프레임워크에 포함된 View와 ViewController
🕹️ UIViewController
- UIViewController는 UIKit 앱의 View 계층을 관리하는 개체(object)이다.
- UIViewController 클래스는 다양한 UIView 요소들을 포함하고 관리(제어)할 수 있다.
(UIView 요소 예시: UILabel, UIButton, UIImageView 등)
- 모든 UIViewController는 하나의 Root View를 가지고 있으며, UIView 요소를 포함한다.
📱 UIView
- UIView는 화면을 구성하는 기본 객체(object)이다.
- 화면에 보이는 모든 요소의 기본 클래스이다. (iOS에서 사용되는 기본적인 뷰 컴포넌트)
(UILabel, UIButton, UIImageView 등의 요소들은 모두 UIView의 하위 객체(object))
5️⃣ 사람들의 입력을 받는 View의 종류
Button, Switch, Slider, Stepper 등의 View는 사람과 상호작용할 수 있다.
6️⃣ 사용자에게 데이터를 보여주는 View의 종류
Label : 글자로 된 데이터를 보여준다.
Image : 이미지 데이터를 보여준다.
Table View : 표 형식으로 데이터를 구성하여 보여준다.
Collection View : 여러 행과 열로 데이터를 구성하여 보여준다.
7️⃣ UITableView의 활용 목적
TableView는 1열로 반복되는 데이터를 표현하는 데 용이하다.
<UITableView 특징>
- 여러 개의 cell을 가지고 있고, 하나의 열과 여러 줄의 행을 지니고 있으며, 수직으로만 스크롤 가능하다.
- 섹션을 이용해 행을 그룹화하여 콘텐츠를 좀 더 쉽게 탐색할 수 있다.
- 섹션의 헤더와 푸터에 View를 구성하여 추가적인 정보를 표시할 수 있다.
8️⃣ UITableView를 활용하여 데이터를 보여주는 방법
TableView에서는 데이터가 특정 형태로 행마다 반복된다. 다르게 말하면 모든 셀의 템플릿이 동일하다는 뜻이다.
따라서 Main.storyborad에서 custom cell을 만들어야 한다.
custom cell을 만들었으면, 해당 셀을 재사용하여 데이터를 담아야 한다.
코드에서 TableViewDataSource 클래스에 cellForRowAt 함수를 구성할 때,
'dequeueReusableCell' 메소드로 재사용할 셀 객체를 불러와 셀의 컴포넌트에 데이터를 연결하면 된다.
🖤 기술질문 돌아보기
1. 모든 View Controller 객체의 상위 클래스는 무엇이고 그 역할은 무엇인지 아는대로 작성해보세요.
참고1: 2024.03.19 - [Swift/TIL(TodayILearned)] - [Swift|TIL] 240318~0319 - UIViewComponents
참고2: apwierk2451.log
모든 ViewController 객체의 상위 클래스는 UIViewController이다.
- UIViewController는 UIKit 앱의 View 계층을 관리하는 개체(object)이다.
- UIViewController 클래스는 다양한 UIView 요소들을 포함하고 관리(제어)할 수 있다.
(UIView 요소 예시: UILabel, UIButton, UIImageView 등)
2. 옵셔널과 옵셔널 해제에 대해 아는대로 작성해보세요.
참고: 2024.02.15 - [Swift/문법] - [Swift] 옵셔널(Optional) 제거 방법 3가지
옵셔널은 값이 없을 수 있는 상황에 사용한다.
값이 있다면 Optional(값) 형태로 저장되고, 값이 없다면 nil로 저장된다.
대표적으로, String을 Int로 변환할 때 Optional 값이 반환된다.
>> let a = Int("3") // Optional(3)
값이 있다면 옵셔널을 해제해줘야 하는데, 그 방법으로 3가지가 있다.
1. forced unwrapping : 옵셔널 뒤에 !를 붙이면 강제로 옵셔널이 언래핑된다. 그러나 만약 nil을 강제 언래핑할 시 오류가 발생하므로, 확실한 상황에서만 사용해야 한다.
>> a! // 3
2. Optional Binding : if문이나 guard문을 사용하면 nil값을 적절히 걸러낼 수 있다.
>> if let b = a {print(b)} // 3
3. Nil coalescing operator : '??'를 이용하여 nil일 때 값을 설정해줄 수 있다.
>> let c = a ?? 0
3. UIKit에서 스토리보드로 UI 구현하기와 코드로 UI 구현 시의 각각의 장단점을 설명하시오
참고: https://infinum.com/blog/storyboard-code-ui-building-ios/
스토리보드로 구현할 경우
- 장점: UI를 쉽게 구성할 수 있다. 컴포넌트의 위치, 크기, 모양 등을 보다 쉽게 설정할 수 있다.
- 단점: 코드보다 로딩 속도가 오래걸린다.
코드로 구현할 경우
- 장점: 코드를 재사용하기 쉽다(상속). 백그라운드 코드를 이해하기 용이하다. 코드가 변경될 경우, PR review에서 보다 쉽게 확인할 수 있다.
- 단점: 어렵다.