iOS 312

iOS SwiftUI) List (UIKit의 tableView에 해당)

iOS SwiftUI) List (UIKit의 tableView에 해당) SwiftUI에는 CollectionView는 없고, List만 있는데 이건 UIKit의 tableView에 해당. struct MyList: View { var body: some View { List { ForEach(1...10, id: \.self) { Text("마이 리스트 \($0)") } } } } struct MyList: View { var body: some View { List { ForEach(1...10, id: \.self) { itemIndex in Text("마이 리스트 \(itemIndex)") } } } } 위에 2개 코드블럭은 같은 의미. (맨 위에있는 똑같은 테이블 만들게 됨) 섹션을 넣고 싶다면..

iOS/SwiftUI 2023.02.22

SwiftUI 기본 정리

SwiftUI 기본 정리 1. 텍스트 또는 이미지 등 무언가 속성을 쓰고 VStack이나 HStack으로 감싸는 식 1-1. 당연히 VStack 안에 HStack , 또는 HStack 안에 VStack이 들어갈 수 있다. 물론 위의 MyVStackView를 별도의 파일로 뺄 수도 있다. 2. 뷰에다가 클릭 처리를 하고 싶다? -> .onTapGesture { } 사용 import SwiftUI struct ContentView: View { var body: some View { HStack { MyVStackView() MyVStackView() MyVStackView() } .padding(10) .background(Color.yellow) //탭 제스쳐 추가 .onTapGesture { print..

iOS/SwiftUI 2023.02.20

RxSwift 간단 핵심 정리

Reactive Programming entity 방출 요소에 의존, 변경 사항을 구독, 해당 변경 사항에 반응. 왜 RxSwift 이용하는가? 상태를 다시 확인하고 수동으로 코드에 조건을 입력하지 않아도 됨 if -else 나 switch 구문 등을 많이 줄일 수 있다. 비동기 실행 코드를 observable-subscriber method에 의해 깔끔하게 짤 수 있음 핵심 요소 1. Observable : 모든 데이터 유형이 될 수 있는 Entity 모든 다른 유형의 이벤트가 발생 시 Observer에게 요소를 방출 2. Observer: 관찰 가능 항목 구독, 변경사항 수신, 모든 변경사항에 대해 프로그래밍된 조치를 취한다. 3. Dispose Bag: 특정 파일의 메모리 할당이 해제될 때마다 이걸..

iOS/RxSwift 2023.02.18

아키텍쳐 MVC, MVVM

아키텍쳐 MVC, MVVM MVC Model View Controller의 약자 모델 - 데이터를 보유. 코딩 가능한 파일, 네트워크 파일, 상수파일, 핵심 데이터모델, 기타 데이터 소스 등 포함. 데이터를 모델링하는 가장 좋은 방법 - struct 사용 (class를 사용하는 경우 상속 같은 무거운 개념 필요하니깐. 그리고 model 의 경우 값만 저장하면 되니깐 struct를 사용) struct = 값 유형 . 클래스와 달리 구조체를 복사할 때, 두 인스턴스에 대해 고유한 복사본을 유지. 뷰 사용자로부터 입력을 받는 상호작용 레이어 시각적 작업 수행 비즈니스 논리 필요 X 기본 레이블, 버튼, 이미지, 애니메이션, 그래픽 등과 같은 요소 포함 컨트롤러 모델에서 모든 데이터를 가져와 비즈니스 로직 수행..

iOS Swift) 2개 이상의 변수를 한꺼번에 Swap

iOS Swift) 2개 이상의 변수를 한꺼번에 서로 바꾸기 (Swap) Swap several variables between two variables 사용 예시 >> 가운데 언어 switch 버튼 클릭 시 한국어 영어 바꾸기 (버튼 UI 뿐만 아니라 내부 로직도 바꿔줘야 되었음) 적용 코드 예시>> @IBAction func changeLangBtn(_ sender: UIButton) { (firstLang, secondLang) = (secondLang, firstLang) (firstLangCode, secondLangCode) = (secondLangCode, firstLangCode) firstLangBtn.setTitle("\(firstLang)", for: .normal) secondLan..

RxSwift Operator) CombineLatest

CombineLatest 오퍼레이터 어디에다가 쓸 수 있을까? ID, PASSWORD 를 사용자로부터 입력받아서 CombineLatest operator 도움을 받아 하나의 Observable sequence 로 합친다. CombineLatest 2 개의 Observable에서 방출된 시퀀스에서 최신 이벤트를 결합 let observable1 = userNameTextField.rx.text.orEmpty let observable2 = passwordTextField.rx.text.orEmpty let observableCombined = Observable.combineLatest(observable1, observable2) loginBtn.rx.tap .withLatestFrom(observabl..

iOS/RxSwift 2023.02.15