๐ค ๋ฐฐ๊ฒฝ & ๋ฌธ์
<์ผ๊ธฐ>์ ์
๋ฐ์ดํธ๋ฅผ ์งํํ ์๋ก ๋ถ๋ช
ํ์ง ์์ ์ฝ๋ ๊ธฐ์ค์ด ํ๋ก์ ํธ ๊ฐ๋
์ฑ ๋ฎ์ถ๊ณ ์์์ ์๊ฒ ๋์์ต๋๋ค.
๋๋ถ์ด ์ผ๋ฐํ๋์ง ์์ View ๊ตฌํ์ผ๋ก, ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ผ๊ด๋๊ฒ ํ๊ธฐ ์ํด์๋ ๋นํจ์จ์ ์ธ ๋ฐ๋ณต ์์
์ด ์์ด์ผ ํ์ต๋๋ค. ๋๋ถ์ด ๋ด์ฉ ๊ฒฐํฉ๋๋ฅผ ๊ฐ์ง BottomMenuViewController์ ๊ฐ์ด, ๊ฐ์ฒด ๊ฐ ๊ฒฐํฉ๋๊ฐ ๋์ ๊ธฐ๋ฅ ๋ณ๊ฒฝ ๋ฐ ๊ฐ์ ์ ์งํ์ ์ด๋ ค์์ด ์์์ต๋๋ค.
(๋ด์ฉ ๊ฒฐํฉ๋: ๊ฐ์ฒด ๊ฐ ์ธํฐํ์ด์ค ์์ด ๋ด๋ถ์ ์ง์ ์ ๊ทผํด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๊ด๊ณ)
๐ต๏ธ ๋ฌธ์ ํด๊ฒฐ๋ฒ
์ํคํ
์ฒ ํจํด์ ๋์
ํด, ์ ํ๋ฆฌ์ผ์ด์
์ ์์คํ
๊ตฌ์กฐ์ ์ญํ ์ ๋ช
ํํ ํ์ฌ ํ๋ก์ ํธ์ ๊ฐ๋
์ฑ์ ํฅ์์ํค๊ณ ๊ฐ์ฒด ๊ฐ ์ ์ ํ ์ธํฐํ์ด์ค๋ฅผ ์ ์ฉํ์ฌ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ํนํ View์ ์ผ๋ฐํ์ ์ง์คํ์ฌ ์ฌ์ฌ์ฉ์ฑ ํฅ์ ๋ฐ ์ผ๊ด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ชฉํํ์ต๋๋ค.
โ๏ธ ์ MVC ํจํด์ธ๊ฐ
<์ผ๊ธฐ>๋ ์ฝ 35๊ฐ์ ๊ฐ๋จํ ์ฌ์ฉ์ ์คํ ๋ฆฌ๋ก ๊ธฐํ๋์ด ์ ํ๋ฆฌ์ผ์ด์
์ ๊ท๋ชจ๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ถ๊ฐ์ ์ธ ํจํด ์์ด MVC ํจํด์ ๋จ๋
์ผ๋ก ์ฌ์ฉํด๋ ๊ด์ฐฎ์ ๊ฒ์ด๋ผ ํ๋จํ์ต๋๋ค. ๋ํด ์ดํ ์๋น์ค๊ฐ ํ์ฅ๋์ด ๊ท๋ชจ๊ฐ ์ปค์ง๋๋ผ๋, MVC ํจํด์ ๋ชจ๋ธ๊ณผ ๋ทฐ์ ์ญํ ์ด ๋ถ๋ช
ํ๊ณ ์ฌ๋ฌ ๋ค๋ฅธ ํจํด๋ค์ด MVC ํจํด์ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ํคํ
์ฒ ๋ณ๊ฒฝ์ ์ฉ์ดํ ๊ฒ ๊ฐ์ MVC ์ํคํ
์ฒ๋ฅผ ์ ํํ์ต๋๋ค.
๐ง๐ปโโ๏ธ ๋ฌธ์ ํด๊ฒฐ ์ฌ๋ก
๐BookListViewController ์ฝ๋ / ๐AddingControlListView ์ฝ๋
- BookListViewController[C] - AddingControlListView[V], FetchedResultsController[V]
- AddingControlListView[C] - collectionView[V]
- FetchedResultsController[C] - Book[M]
ํ๋์ ์ฑ์ ์ฌ๋ฌ MVC ํจํด์ด ๊ฒฐํฉ๋์ด ๊ตฌ์ฑ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ MVC ๊ตฌ์กฐ๊ฐ ํ ํ๋ฉด์ ๊ตฌ์ฑํ๊ธฐ ๋๋ฌธ์, MVC ํจํด๋ View์ ์ผ๋ถ๋ก ์ฌ๊ฒจ์ง๋๋ค. ๋ฐ๋ผ์ AddingControlListView๋ฅผ ํ๋์ (2) MVC ํจํด์ผ๋ก ๊ตฌ์กฐํํ๊ณ , ๊ทธ๋ ๊ฒ ๋ง๋ค์ด์ง View๋ฅผ BookListController๊ฐ ํต์ ๋๋ก ํ์ฌ ๋ค๋ฅธ (1) MVC ํจํด์ ๊ตฌ์ฑํ์ต๋๋ค.
์ฒ์ AddingControlListView๋ ์ปค์คํ
UICollectionView์์ต๋๋ค. ScrollViewDelegate๋ฅผ ํตํด Dragging์ ์ธ์ํ๊ณ ์ ์ ํ ํ์ด๋ฐ์ completionHandler๋ฅผ ํธ์ถํ๋ ๋ก์ง์ ๊ตฌํํ์ต๋๋ค. ํ์ง๋ง select ์ด๋ฒคํธ ๊ตฌํ์ ์ํด UICollectionViewDelegate๋ฅผ ์ฑํํ๊ฒ ๋๋ฉฐ, controller๊ฐ delegate๋ฅผ ์์๋ฐ๋ ๊ฒ์ด ์๋๋ผ ์๊ธฐ ์์ ์ด ์์๋ฐ๋ ๊ตฌ์กฐ๊ฐ ๋์์ต๋๋ค. delegate๊ฐ controller์์ ์ํต์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ด ์๋๊ธฐ์ ์ด๋ MVC ์ํคํ
์ฒ์ ๋ถ์ ํฉํ๋ค๊ณ ํ๋จํ์ต๋๋ค.
๋ฐ๋ผ์ AddingControlListView๋ฅผ UIView๋ก ํ์ฅํ๊ณ , AddingControlListViewDelegate๋ฅผ ๊ตฌํํด select ์ด๋ฒคํธ์ ๋ํ ์์
์ ๊ตฌํํ ์ ์๋๋ก ํ์ต๋๋ค. ๊ธฐ์กด์ ListView๋ ๋ด๋ถ์ collectionView๋ฅผ ์์ฑํ์ฌ ๋์ฒดํ์ผ๋ฉฐ, UICollectionViewDelegate๋ฅผ ํตํด collectionView์ AddingControlListView๊ฐ ์ํตํ ์ ์๋๋ก ๊ตฌํํ์ต๋๋ค.
BookListViewController์ Book ๋ชจ๋ธ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ๋๋ค๋ฅธ (3) MVC ํจํด์ด ๊ตฌ์ฑํ์ต๋๋ค.
Book ๋ชจ๋ธ์ CoreData ํ๋ ์์ํฌ๋ฅผ ํตํด ์ ์ฅ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๊ณ ๋ณ๊ฒฝ๋ฉ๋๋ค. ์ด๋ฌํ CoreData์ results ๊ด๋ฆฌ๋ FetchedResultsController๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค. ํนํ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ ๋ ๋๋ง๋ค Book ๋ชจ๋ธ์ ์ด๋ฅผ Controller์๊ฒ ์๋ฆฝ๋๋ค(Notification). Controller๋ Book ๋ชจ๋ธ์ ๋ณ๊ฒฝ์ฌํญ์ ์ฒ๋ฆฌํ๊ณ FetchesResultsDelegate๋ฅผ ํตํด ๋๋ฆฌ์์ธ BookListViewController์๊ฒ ๋ณ๊ฒฝ์ฌํญ์ ์๋ ค ๋ชจ๋ธ์ ๊ฒฐ๊ณผ๋ฅผ View์ ์
๋ฐ์ดํธํฉ๋๋ค.