일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Clean Code
- swift documentation
- Protocol
- 클린 코드
- tableView
- HIG
- 리펙터링
- uiscrollview
- Xcode
- 애니메이션
- Observable
- clean architecture
- UICollectionView
- ios
- collectionview
- rxswift
- Refactoring
- 리펙토링
- MVVM
- SWIFT
- swiftUI
- combine
- 리팩토링
- UITextView
- 스위프트
- Human interface guide
- ribs
- RxCocoa
- uitableview
- map
- Today
- Total
목록RxCocoa (22)
김종권의 iOS 앱 개발 알아가기
* 주의: Section이 한개밖에 없는 경우 해당 방법 사용하고, 만약 Section이 여러개면 RxDataSource 사용 방법 포스팅 글 참고 Cell 준비 // MyCell.swift import UIKit final class MyCell: UITableViewCell { private let label: UILabel = { let label = UILabel() label.font = .systemFont(ofSize: 24) label.textColor = .black return label }() override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseId..
1. Observable로 Wrapping하여 권한 요청) 위치 권한, 실시간 위치 정보 획득 2. Observable로 Wrapping하여 권한 요청) 사진 권한, 카메라 권한 3. Observable로 Wrapping하여 권한 요청) 마이크 권한, ATT(App Tracking Transparency) 권한 4. Observable로 Wrapping하여 권한 요청) RxSwift의 concat을 이용하여 순서대로 권한 요청 방법 아이디어 권한 설정코드들을 Observable로 wrapping RxSwift의 concat연산자를 활용하여 Observable들을 순서대로 방출 Observable로 Wrapping하는 방법이 나와있는 위 Observable로 Wrapping, 1 ~ 3번 글 확인 세팅 프..
1. Observable로 Wrapping하여 권한 요청) 위치 권한, 실시간 위치 정보 획득 2. Observable로 Wrapping하여 권한 요청) 사진 권한, 카메라 권한 3. Observable로 Wrapping하여 권한 요청) 마이크 권한, ATT(App Tracking Transparency) 권한 4. Observable로 Wrapping하여 권한 요청) RxSwift의 concat을 이용하여 순서대로 권한 요청 방법 Observable로 wrapping 작업 핵심 기존에 Observable 형태를 리턴해주는 작업이면, RxSwift의 생성자 연산자 중에 deferred 연산자 사용하여 wrapping 기존에 Observable 형태가 아니고 클로저 형태로 값을 받는 경우, create 연..
1. Observable로 Wrapping하여 권한 요청) 위치 권한 요청, 실시간 위치 정보 획득 2. Observable로 Wrapping하여 권한 요청) 사진 권한, 카메라 권한 3. Observable로 Wrapping하여 권한 요청) 마이크 권한, ATT(App Tracking Transparency) 권한 4. Observable로 Wrapping하여 권한 요청) RxSwift의 concat을 이용하여 순서대로 권한 요청 방법 Observable로 wrapping 작업 핵심 기존에 Observable 형태를 리턴해주는 작업이면, RxSwift의 생성자 연산자 중에 deferred 연산자 사용하여 wrapping (해당 글) 기존에 Observable 형태가 아니고 클로저 형태로 값을 받는 경우..
Scan 연산자 Scan 연산자: 이전에 방출된 아이템과 새로 방출된 아이템을 결합하여, 새로운 아이템을 생성 새로운 아이템은 그 다음 방출된 아이템의 prev값 Scan 연산자의 핵심은 scan 연산자 내부에 기존 값을 저장하고 새로운 값을 받아서 연산 할 수 있다는 것 scan 연산자 예시1) +, - 카운터 기능 구현 사용할 프레임워크 pod 'RxSwift' pod 'RxCocoa' pod 'SnapKit' UI 준비 - ViewController +, - 버튼을 탭했을 때 카운트를 표출할 UILabel, UIButton 준비 값을 방출하고 구독도 할수 있는 BehaviorRelay 변수 선언 let countRelay = BehaviorRelay(value: 0) 버튼이 탭할때마다 countR..
RxCocoa에서 제공하는 방법으로 tableView의 ControlEvent 처리 방법 RxCocoa의 UITableView+Rx 파일에 존재 itemSelected: 선택한 셀의 IndexPath 값 획득 // viewDidLoad()에서 호출 private func setupTableViewDelegate() { tableView.rx.itemSelected .map { "셀 선택 indexPath = \($0)" } .bind(to: titleLabel.rx.text) .disposed(by: disposeBag) } modelSelected: 선택한 셀의 model 값을 획득 itemDeleted tableView.rx.itemDeleted .map { "아이템 제거 = \($0)" } .bin..
1. ReactorKit - 개념 2. ReactorKit - 테스트 방법 (Storyboard 사용, IBOutlet 테스트 방법) 3. ReactorKit - `TaskList 구현`, 템플릿 (template), 비동기 처리 transform(mutation:) 4. ReactorKit - `TaskEdit 구현`, 화면전환, 데이터 전달 * ReactorKit과 RxDataSources 사용 방법은 이곳 참고 ReactorKit 구현 방향 View, Reactor 생성 View의 storyboard에 UI 생성, IBOutlet 입력 Reactor의 Action 정의, Action에 해당하는 Mutation, State 정의 Reactor에서 필요한 service 정의 Reactor의 mutate..
* Section별, Item별로 dataSource 사용 모델 구현 패턴 방법은 이곳 참고 Cocoa Pods 종속성 pod 'RxSwift' pod 'RxCocoa' pod 'RxDataSources' 모델 정의 RxTableViewSectionedReloadDataSource를 사용하여 DataSource에서 사용되는 데이터형은 `AnimatableSectionModelType`를 준수하는 모델이어야 가능 AnimatableSectionModelType은 SectionModelType을 준수하는 프로토콜 original에 해당되는 모델은 Section에 해당되고, items에 해당되는 인수는 rows값 AnimatableSectionModelType을 준수하는 모델 정의하기 전에 [Item] 타입..