RIB๊ณผ ํต์ ํ๊ธฐ
์์ฑ์์ ์ด๋ ํ ํ๋ฆ์ผ๋ก ๋์ํ๋์ง ์์๋ค๋ฉด, ์ด๋ฒ์๋ RIB๊ฐ์ ์ํต์ ์์๋ณผ ์ฐจ๋ก๋ค. ์ผ๋จ ์์์ ํ์ RIB์ Interactor
๊ฐ Listener
๋ผ๋ Protocol์ ์์๋ฅผ ์ฑ์ฐ๊ณ , ์์ RIB์ Interactor
๊ฐ ์ด๋ฅผ ์ฑํํ๊ณ ์๋ค๊ณ ํ๋ ๊ฒ์ ๊ธฐ์ตํด๋ณด์.
์ดํด๋ฅผ ๋๊ธฐ ์ํด ํ๋์ ์์น์ ์ฌ๋ฌ ํ์ผ์ ์๋ Listener๋ค์ ๊ฐ์ ธ์๋ค. ๋ ์ค์ tutorial๊ณผ๋ ์ฝ๊ฐ์ ๋ค๋ฅผ์ง ๋ชจ๋ฅธ๋ค. ํ์ง๋ง ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ํ์ RIB์์ ํต์ ํ๊ณ ์ถ์ ๊ฒ๋ค์ด ์๋ค๋ฉด Listener
์ ์ ์ํ๊ณ , ์ด๋ฅผ ์์ RIB์ Interactable
Protocol์ด ์ฑํํ๋๋ก ํ๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด Interactable
ํ๋กํ ์ฝ์ Interactor
๊ฐ ์ค์ํ๋๋ก ํ์ฌ ํต์ ์ ๊ฐ๋ฅํ๋๋ก ํ๋ค.
๊ทธ๋ผ ๊ทธ๋ฆผ์ ํตํด ๋ฐ๋ผ๊ฐ๋ฉด์ ๋จธ๋ฆฟ์์ ๊ตฌ์ฒดํ์์ ์ ํด๋ณด์. Child RIB์์ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ ๊ณ , Another RIB์ ์๋ ํ๋ฉด์ด ๋์์ ธ์ผ ํ๋ ์ํฉ์ด๋ค.
- Child RIB์ View์์ Interaction์ด ์ผ์ด๋๋ค.
PresentableListener
๋ฅผ ์ค์ํ๊ณ ์๋Interactor
์ ์๋ method๋ฅผ ํธ์ถํ๋ค. - Interactor๋ ํด๋น ์์ฒญ์ ์์ RIB์์ ์ฒ๋ฆฌํด์ผ ํ๋ฏ๋ก
Listener
Protocol์ ์ค์ํ๊ณ ์๋ ๋ถ๋ชจ RIB์Interactor
๊ตฌํ์ฒด์ ์์ฒญํ๋ค. - Parent RIB์
Interactor
๋ ์ด๋ฅผ ์ค์ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์์ฒญ์ ๋ฐ์ ์ฒ๋ฆฌํ๋ค. - ๋ก์ง์ ์ํํ ํ, Router์๊ฒ ํ์ RIB์ผ๋ก ๊ฐ์ผํ๋ค๊ณ ์๋ฆฐ๋ค.
- Router๋ Child RIB์ detachํ๋ค. (์ด ๋, Child RIB์ ๋ง๋ค์์ ๋ ๋ฐ์ router ๊ฐ์ฒด๋ฅผ ๋ฃ์ด ํด์ ํ๋ค.)
- View์ ํ์ฌ ๋ณด์ฌ์ง๊ณ ์๋ ํ๋ฉด์ dismiss ํด์ผ ํ๋ค๊ณ ์์ฒญํ๋ค.
- Another RIB์ ๋ง๋ค๊ณ Attachํ๋ค.
- ์ด ๋, ๋์ ์์กด์ฑ์ด ํ์ํ๋ค๋ฉด
build()
ํจ์์ ์ธ์๋ก ๋ฃ์ด ๋ณด๋ธ๋ค. - Another RIB์ Builder๋ component๋ฅผ ๋ง๋ค๊ณ , View๋ฅผ ๋ง๋ ๋ค.
- ๋ง๋ View๋ฅผ Interactor์ ์ฃผ์ ํ๊ณ Router๋ ๋ง๋ ๋ค.
- Router๋ ์์ฑ๋๋ ์์ ์ View์ present๋ฅผ ํธ์ถํ๋ค.