키보드를 Dismiss 하는 방식에는 // 방식 1 [textField].resignFirstResponder() // 방식 2 self.view.endEditing(true) 두 가지가 있다. 하지만 기능적으로 아무런 차이도 없을까? UITextFieldDelegate 의 resignFirstResponder() 메서드 resignFirstResponder() 메서드를 알아보기 전에 먼저 becomeFirstResponder 메서드를 알아보자. 하단 영상은 각 UITextFIeld 에서 Return 키를 누르면 다음 TextFIeld 로 시점이 옮겨지도록 구현한 View 이다. becomeFirstResponder() 함수는 해당 윈도우에서 이 객체를 First Responder 로 만들 것을 요청하는..
분류 전체보기
Swift 에서는 콜렉션 타입으로 Array, Set, Dictionary 세가지를 지원합니다. Array 빈 배열 생성 var words = [String]() 배열 아이템 동적 추가 ① append(_:) words.append("star") 입력된 값을 배열의 맨 뒤에 추가. 데이터 추가 이전에 배열의 크기를 +1 만큼 확장한 후, 마지막 인덱스 위치에 추가합니다. ② insert(_:at:) shoppingList.insert("추가할 내용", at: 0) 원하는 위치에 직접 추가하고 싶을 때 사용하는 메서드입니다. ③ append(contentsOf:) words.append(contentsOf: ["word1", "word2", "word3"]) 배열의 마지막에 아이템을 추가하지만, 개별 아이..
Swift 에서 String 은 값 타입이다.(Value Type) 따라서 String 이 다른 함수 혹은 메서드로부터 생성되면, String 이 할당될 때 이전 String 의 Reference 를 할당하는 것이 아니라 값을 복사하여 생성한다. 여러 줄의 문자열을 사용하고자 하는 경우 let quotation = """ The White Rabbit put on his spectacles. "Where shall I begin, please your Majesty?" he asked. "Begin at the beginning," the King said gravely, "and go on till you come to the end; then stop." """ 접두사 & 접미사 비교 hasPrefi..
할당 연산자 Tuple 을 이용하여 여러 값을 한번에 할당한다. let (x, y) = (2, 3) nil 병합 연산자 a ?? b 형태를 갖는 연산자로 Optional a 를 벗겨서(unwraps) 만약 a가 nil인 경우 b를 반환한다. a != nil ? a! : b 단방향 범위 (One-Side Ranges) [a..] [..a] 위와 같은 형태로 시작 혹은 끝만 지정하여 사용하는 범위 연산자이다. for word in wordList[2...] 아래와 같이 특정 값을 포함하는지 여부를 판단하는 경우에도 사용된다. let range = ...5 range.contains(7) // false range.contains(-1) // true
URLSession 이란? 주어진 URL 이 가리키는 endPoint 로부터 자료를 다운로드 받거나 업로드 할 수 있는 API 를 제공하는 클래스이다. URLSession / URLSessionTask / URLSessionConfiguration ? URLSession 에서 가장 중요한 세가지 객체를 이해하고 넘어가보자. URLSession 객체를 사용하여 하나 이상의 URLSessionTask 객체를 생성할 수 있는데, 이러한 URLSessionTask 는 데이터를 Fetch 하여 앱으로 데이터를 전달하거나, 파일을 다운받거나, 원격 장소에 데이터나 파일을 업로드하는 일을 의미한다. 이러한 Session 을 구성하기 위하여 URLSessionConfiguration 객체를 사용하는데, 이 객체는 Ca..
UICollectionView 데이터 항목의 정렬된 컬렉션을 관리하고 커스텀한 레이아웃을 사용해 표시하는 객체. CollectionView 의 구성 - Supplementary View : Section에 대한 정보를 표시 (header-footer. 필수적으로 구현 X) - Cell : Collection View 의 콘텐츠를 표시 UICollectionView, UITableView 의 ContentView UIView 타입으로, Cell 을 구성할 때 Cell Content 를 나타내는 모든 Custom View 를 Content View 에 추가한다. Cell 객체는 BackgroundView 앞에 Content View 를 배치한다. * Decoration View : Collection Vie..
UITableView SwiftUI List. 데이터를 목록 형태로 보여 줄 수 있는 UIComponent. Section 을 이용해 그룹화 가능. Section 의 Header / Footer 를 활용해 View 를 구성하여 추가적인 정보를 표시할 수 있다. UITableViewDataResource & UITableViewDelegate 1. UITableViewDataResource : Data 를 받아 View 를 그려주는 역할. Delegate 에 의존하여 View 를 업데이트. e.g. 총 섹션이 몇개인지, 섹션의 행은 몇개인지, 행에 어떤 정보를 표시할 것인지 Table View 를 생성하고 수정하는데 필요한 정보를 Table View 객체에 제공. 필연적으로 구현할 두 메서드. 1) 각 S..
최종 구현 UI 구성 순서 및 Stack View Constraints 설정 계산기의 UI 를 "숫자나 결과 값을 나타내는 UILabel" 와 "이를 계산하기 위한 숫자 및 연산자 버튼" 크게 두 부분으로 나누어서 생각해볼 수 있다. 1) 숫자나 결과 값을 나타내는 UILabel 따라서 UILabel 하나를 생성한 후 Top, Trailing, Leading 에 각각의 Constraints 를 준 후, Height 를 설정하면 다음과 같이 Label 이 위치한다. Bottom 을 제외하고 값을 준 이유는 하단의 생성하는 UIView에서 Top 에 Constraints 를 주기 위해서이다. 2) 계산하기 위한 숫자 및 연산자 버튼 버튼 UI 를 구현하기 위해 UIView 를 추가하여 앞서 만든 Label ..
UIStackView 란? 열 또는 행에 View 들의 묶음을 배치할 수 있는 간소화된 인터페이스. AutoLayout 을 이용하여 디바이스의 스크린 사이즈나, 혹은 일어날 어떠한 변화에 맞추어 동적인 UI 를 구성할 수 있다. 복잡한 UI 를 구성하는데에 있어서, 일일이 Auto Layout 제약조건을 설정하면 제약 조건이 많아져 복잡하고, 관리하기 어려울 뿐만 아니라 종종 원하는 대로 UI 구성이 안될 때도 있다. StackView 를 사용하면 AutoLayout 제약 조건을 설정하지 않아도 간단하게 UI 구성이 가능하다. UIStackView 속성 Stack View 에는 다양한 속성이 있다. 1. Axis Stack View 의 방향을 결정한다. → 가로 : horizontal → 세로 : ver..
Code 로 Present / Push 되는 화면 전환 방법에서의 데이터 전달 # 실습 : ⓐ ViewController 에서 ⓑ ViewController 로의 데이터 전달 1) ⓐ ViewController 의 메서드에 instantiateViewController 를 호출하여 데이터를 전달할 ⓑ ViewController 로 Down Casting 하여 ⓑ ViewController 의 프로퍼티에 접근한다. 2) ⓑ ViewController 의 viewDidLoad() 메서드에 값을 넣은 프로퍼티를 호출한다. Delegate 패턴을 활용하여 이전 화면에 데이터 전달하기 Delegate : 위임자 Delegate 패턴 : 위임자를 갖고 있는 객체가 다른 객체에게 자신의 일을 위임하는 형태의 디자인 ..