Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- swiftUI
- clean architecture
- 애니메이션
- Human interface guide
- UITextView
- map
- Protocol
- Xcode
- 스위프트
- collectionview
- 리펙토링
- swift documentation
- HIG
- 클린 코드
- Refactoring
- UICollectionView
- tableView
- Observable
- SWIFT
- Clean Code
- ribs
- combine
- uiscrollview
- 리팩토링
- ios
- RxCocoa
- uitableview
- 리펙터링
- MVVM
- rxswift
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 3. RIBs의 구조, RIB 생성, attach/detach 흐름 본문
Architecture (swift)/RIBs
[iOS - swift] 3. RIBs의 구조, RIB 생성, attach/detach 흐름
jake-kim 2021. 4. 20. 00:17
Delegate 기초 개념
- 데이터를 주는 쪽에서 클래스 내부에 protocol을 선언, 데이터를 받는 쪽에서 protocol 구현
ex) LoggedOutInteractor의 LoggedOutRouting과 같이, 클래스 내부에 프로토콜을 선언하는 경우 - RIBs에서 버튼을 탭할때 데이터를 보내는 기능을 구현할 경우
- VC -> Interactor로 데이터 보내기: ViewController의 PresentableListener에 tap() 함수 선언
- Interactor에서 PresentableListener 프로토콜 구현
- VC에서 버튼 이벤트가 발생하는 경우 프로퍼티로 선언된 PresentableListener객체의 함수 실행
parent와 child간 데이터 교환
- child -> parent: Interface Listner 사용
- ChildInteractor에서 선언된 LoggedOutListener사용
- ParentBuilder의 Dependency 프로토콜에서 받는 것
(extension하고 있는 파일인 ParentComponent+ChildDependency.swift에 정의)
RIB 생성 방법
- RIB 생성
- 부모의 Router에 프로퍼티 적용: 생성된 child Builder 프로퍼티 추가, init에 포함
- dependency적용: Builder를 만들어낼때 인수로 component 주입이 필요하고 이 component는 parentComponent 속성을 따르고 있으므로 parentComponent+childComponent 파일 생성하여 적용
- 부모의 Builder에 변경된 Router내용 적용
viewless RIB의 attach, detach 처리
- 부모의 Router에서 didLoad()시 attach
- 부모의 Router에서 attach 로직
- Builder를 통해 child 생성 (오류 -> interactor가 주입되는데, 부모Interactable에 ChildListener 적용하여 해결)
- currentChild로 지정
- present
view가 존재하는 RIB의 attach, detach 처리
- 부모 Interactor에서 (p)Routing에 routeToChild() 선언
- 부모 Router에서 routeToChild() 구현
- 현재 child가 존재하면 detachCurrentChild(): child존재 -> detachChild -> dismiss
- Builder를 통해 child 생성 (오류 -> interactor가 주입되는데, 부모 Interactable에 ChildListener 적용하여 해결)
- currentChild = child
- attachChild(child)
- present
* 좋은 예제: ios-development.tistory.com/429
'Architecture (swift) > RIBs' 카테고리의 다른 글
[iOS - swift] 4-3) RIBs 튜토리얼 (viewless RIB) (0) | 2021.04.20 |
---|---|
[iOS - swift] 4-2) RIBs 튜토리얼 (Listener Interface) (0) | 2021.04.20 |
[iOS - swift] 4-1) RIBs 튜토리얼 (RIB template, 기능 추가, storyboard 사용 (0) | 2021.04.17 |
[iOS - swift] 2. RIBs의 개념 (2) | 2021.04.16 |
[iOS - swift] 1. RIBs가 나온 배경 (0) | 2021.04.16 |
Comments