일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- RxCocoa
- map
- combine
- tableView
- Xcode
- ios
- swift documentation
- SWIFT
- Human interface guide
- Clean Code
- 스위프트
- 애니메이션
- clean architecture
- collectionview
- Observable
- ribs
- uitableview
- 리펙토링
- 클린 코드
- rxswift
- UITextView
- swiftUI
- UICollectionView
- HIG
- 리펙터링
- Protocol
- Refactoring
- MVVM
- uiscrollview
- 리팩토링
- Today
- Total
목록SWIFT (948)
김종권의 iOS 앱 개발 알아가기
0) 프로젝트 초기 세팅 1) Todo 앱 구조, LoggedOut RIB 2) Todo 앱 구조 LoggedIn RIB 3) Todo 앱 구조 Rx stream 이전까지 구현된 점 * 정리 - child RIB 생성, DI, attach/detach Child RIB 생성 Parent Router에 Builder 프로퍼티 추가 viewless인 경우: (p)ChildDependency에 ChildViewController가 지정되어 있고, ParentComponent에 VC객체 선언과 init생성자 적용하여 이 값을 주입 (viewless하위에 viewful Child들이 생기는 것을 고려하기위함) Child 의존성 정의 ChildDependency, ChildComponent, parentCompon..
0) 프로젝트 초기 세팅 1) Todo 앱 구조, LoggedOut RIB 2) Todo 앱 구조 LoggedIn RIB 3) Todo 앱 구조 Rx stream 이전까지 진행된 점 (child RIB 추가) Add new RIB -> parent Router에 새로운 RIB의 Builder를 private let으로 선언, init 적용 Attach ViewFul -> Parent Router에서 나중에 detach시키기 위해 private var childName: ViewalbleRouting 선언, 저장 Viewless LoggedOutViewController 버튼 탭 -> (p) LoggedOutPresentableListenr -> LoggedOutInteractor에서 Login처리 Log..
MVC 구성 View는 Controller와 상호작용 하지만, Controller의 인터페이스를 알지 못하며 직접 호출하지 않는 구조 MVC끼리의 통신 MVC 애플의 지향: 최소한의 구성 요소만 포함 old MVC의 한계: Massive ViewController, DI 프로그래밍 x, 프로토콜 지향 프로그래밍 x 한계 극복 Delegate, DataSource를 Model에 두고, ViewController 비즈니스 로직을 간소화 Coordinator가 포함된 MVC패턴 MVC의 원칙 Model: 앱의 데이터 네트워크 코드: 네트워크 통신은 되도록 단일 클래스 사용 지속성 코드: DB, Core Data 코드 파싱: codable Manager 클래스 (=Wrapper class) DataSource,..
0) 프로젝트 초기 세팅 1) Todo 앱 구조, LoggedOut RIB 2) Todo 앱 LoggedIn RIB 3) Todo 앱 Rx Stream Todo 앱 구조 LoggedOut RIB 추가 Builder의 핵심 build()를 호출하는 쪽은 Router이며, build()반환값은 ~Routing이고 이 객체를 화면전환에 사용한다는 것이 중요 viewControllable: ~Routing객체.viewControllable ParentRouter에서 ChildBuilder도 저장하지만 build()의 결과로 나온 ViewableRouting형태의 객체도 저장 (detach할 때 사용하기 위함) RIB을 새로 생성하면서 Parent에서 해줘야 할 것 부모 Router에 private let bui..
원리 LaunchGameWorkflow에서 Rx로 진행 로직 구현 각 Interactor는 -ActionableItem 프로토콜을 구현 RootActionableItem: 로그인을 기다리다가 끝날 경우 로직 수행 LoggedInActionableItem: 바로 game을 시작하도록 로직 수행 url 스킴 등록 URL: ribs-training://launchGame?gameId=ticTacToe info.plist에 등록 CFBundleURLTypes CFBundleURLName com.uber.TicTacToe CFBundleURLSchemes ribs-training UrlHandler AppDelegate에 프로토콜 선언 -> RootInteractor에서 프로토콜 구현 -> RootBuilder에..
LoggedIn에 OffGame 붙이기, 이동 OffGame 생성 OffGame RIB 그룹, 파일 생성 UI: raw.githubusercontent.com/uber/ribs/assets/tutorial_assets/ios/tutorial2-composing-ribs/source/source2.swift 부모인 LoggedIn에 OffGame Builder 프로퍼티 추가 Router에 새로운 Builder 프로퍼티 추가 // LoggedInRouter.swift private let offGameBuilder: OffGameBuildable init(interactor: LoggedInInteractable, viewController: LoggedInViewControllable, offGameBui..
RIB 라우팅 (LoggedOut -> LoggedIn) RootRouting protocol에 LoggedIn RIB으로 화면전환 관련 함수 선언 // RootInteractor.swift protocol RootRouting: ViewableRouting { func routeToLoggedIn(withPlayer1Name player1Name: String, player2Name: String) } LoggedOutListener를 통해서 RootInteractor에 didLogin 이벤트를 받은 경우, 화면전환 // RootInteractor.swift func didLogin(player1Name: String, player2Name: String) { router?.routeToLoggedIn..
템플릿 세팅 git clone: github.com/uber/RIBs 템플릿 설치 $ cd RIBs/ios/tooling $ /install-xcode-template.sh Xcode의 템플릿 확인 튜토리얼의 RIB 트리 LoggedOut RIB 추가 * storyboard를 사용할 경우, 아래 "RIBs에서 storyboard 사용 방법" 참고 LoggedOutBuilder LoggedOutBuildable protocol을 사용하여 mock을 만들 수 있는 구성 LoggedOutInteractor LoggedOutRouting protocol로 Router와 통신 LoggedOutListener protocol은 Router와 연결되어 있으며 Router에서 부모 RIB에 데이터 전달 LoggedOu..