일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MVVM
- rxswift
- SWIFT
- Refactoring
- ios
- clean architecture
- uitableview
- 애니메이션
- uiscrollview
- 스위프트
- combine
- UICollectionView
- swiftUI
- 리펙토링
- collectionview
- ribs
- 클린 코드
- 리팩토링
- HIG
- Observable
- Clean Code
- UITextView
- map
- swift documentation
- tableView
- Xcode
- RxCocoa
- Human interface guide
- Protocol
- 리펙터링
- Today
- Total
목록Architecture (swift)/RIBs (13)
김종권의 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..
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..
RIBs 설치 프로젝트 생성 pod 설치 - pod 'RIBs'할 경우 RxSwift버전은 4.x버전으로 설최되므로, tag를 명시하여 RxSwift 5.x버전이 받아지도록 설정 pod 'RIBs', :git => 'https://github.com/uber/RIBs.git', :tag => '0.9.2' storyboard, SceneDelegate 삭제 storyboard 삭제 Main.storyboard 삭제 target의 main interface 에서 설정된 스토리보드 해제 SceneDelegate 삭제 SceneDelegate.swift 삭제 info.plist에 Application Scene Manifest 삭제 AppDelegate.swift에 UISsceneSession Lifecycl..
원리 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에..
Root -> LoggedIn 플레이어 이름 DI LoggedInBuildable에 받을 데이터 기입 (이름정보) // LoggedInBuilder.swift protocol LoggedInBuildable: Buildable { func build(withListener listener: LoggedInListener, player1Name: String, player2Name: String) -> LoggedInRouting } 변경내용 반영 // LoggedInBuilder.swift func build(withListener listener: LoggedInListener, player1Name: String, player2Name: String) -> LoggedInRouting { let co..
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..