Controller object๋ฅผ ์ฝ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
Controller object
Controller ๊ฐ์ฒด๋ ํ๋ ์ด์์ ๋ทฐ ๊ฐ์ฒด์ ๋ชจ๋ธ ๊ฐ์ฒด ์ฌ์ด์ ์กฐ์ ์ ๋๋ ์ค์ฌ์๋ก์ ๋์ํ๋ค. MVC ๋์์ธ ํจํด์์ Controller๋ view ๊ฐ์ฒด์์ ์ด๋ฃจ์ด์ง๋ ์ฌ์ฉ์์ ๋์๊ณผ ์๋๋ฅผ ํด์ํ๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ๋ฒํผ์ tapํ๊ฑฐ๋ ํด๋ฆญํ ๋, ๋๋ text field์ ํ ์คํธ๋ฅผ ์ ๋ ฅํ ๋์ ๊ทธ ๋์๊ณผ ์๋๋ฅผ ํด์ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋กญ๊ฒ ๋๋ ๋ณํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ธ ๊ฐ์ฒด์ ์ ๋ฌํ๋ค. ์ฌ์ฉ์๊ฐ ํ์ผ ์์คํ ์ ์ ์ฅ๋ ๋ฌธ์๋ฅผ ์ด์ด ๋ณผ ๋, ์ฆ ๋ชจ๋ธ ๊ฐ์ฒด๊ฐ ๋ณ๊ฒฝ๋ ๋ Controller๋ ๊ทธ ์๋ก์ด ๋ชจ๋ธ ๋ฐ์ดํฐ๋ฅผ ๋ทฐ ๊ฐ์ฒด์ ์ ๋ฌํ๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ๋ฐ์ ๋ทฐ ๊ฐ์ฒด๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ํ์ํ๋ค. ๋ฐ๋ผ์ Controller๋ view ๊ฐ์ฒด๊ฐ model ๊ฐ์ฒด์, ๋ฐ๋๋ก model ๊ฐ์ฒด๊ฐ view ๊ฐ์ฒด์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํด ์๊ฒ ํ๋ ํ์ดํ์ด๋ค. ๋๋ถ์ด Controller๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์์ ์ ์ค์ ํ๊ณ ์กฐ์ ํ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ๊ฐ์ฒด์ LifeCycle์ ๊ด๋ฆฌํ ์ ์๋ค.
Cocoa ํ๋ ์์ํฌ๋ ๋ค์ ์ธ ๊ฐ์ง์ Controller ํ์ ์ ์ ๊ณตํ๋ค:
- Coordinator Controller: ์กฐ์ ์ปจํธ๋กค๋ฌ
- View Controller(iOS): ๋ทฐ ์ปจํธ๋กค๋ฌ
- Mediating Controller(OS X, ์ง๊ธ์ maxOS): ์ค์ฌ ์ปจํธ๋กค๋ฌ
Coordinating Controller ์กฐ์ ์ปจํธ๋กค๋ฌ
Coordinating Controller๋ ์ ์ฒด ๋๋ ์ผ๋ถ ์ดํ๋ฆฌ์ผ์ด์ ์ ์๋์ ๊ฐ๋ ํ๊ณ ๊ด๋ฆฌํ๋ค. ์ด controller๋ ๋ณดํต ํน์ ๋ก์ง์ด ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฃผ์ ๋๋ ์์น์ ์๋ค. iOS ์ดํ๋ฆฌ์ผ์ด์ ์์๋ ๋ณดํต View Controller๊ฐ Coordinating Controller์ ์ญํ ์ ํฌ๊ดํ๋ค. macOS์์๋ NSWindowController ๋๋ NSDocumentController๋ฅผ ์ฌ์ฉํ๋ค.
Coordinating Controller๋ ๋ค์์ ํฌํจํ ๋ค์ํ ๊ธฐ๋ฅ์ ์ํํ๋ค:
- delegation ๋ฉ์ธ์ง์ ์๋ตํ๊ณ notification ๊ด์ฐฐํ๊ธฐ
- ์ฌ์ฉ์๊ฐ ๋ฒํผ์ tapํ๋ ๊ฒ๊ณผ ๊ฐ์ด control์์ ์ ๋ฌ๋๋ ์ก์ ๋ฉ์ธ์ง์ ์๋ตํ๊ธฐ
- ๊ฐ์ฒด๋ค ๊ฐ ์ฐ๊ฒฐ ์ค์ ๋ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ด launch๋ ๋ ๋ฑ ์ด์ธ ์ค์ ์์ ์ํ
- "์์ ํ" ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌํ๊ธฐ
View Controller ๋ทฐ ์ปจํธ๋กค๋ฌ
iOS์ UIKit์ macOS์ AppKit๋ ๋ชจ๋ View Controller ํด๋์ค๋ค์ ์ ๊ณตํ๋ค. ํ์ง๋ง ๋ View Controller๋ ์๋ก ๋ค๋ฅธ ํน์ง์ ๊ฐ์ง๋ค.
macOS์ AppKit์์ View Controller๋ NSViewController ํด๋์ค์ ์ปค์คํ ์๋ธ ํด๋์ค์ ์ธ์คํด์ค์ด๋ค. ์ด ์ปจํธ๋กค๋ฌ๋ nib ํ์ผ์์ ๋ณด๊ด๋๋ view๋ฅผ ์์ ํ๋ฉฐ, view์ ํ์ view๋ค์ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ๊ณ ์ ๋ฐ์ดํธํ๋ค.
iOS์ UIKit์์ View Controller๋ ํ๋ฉด ๊ฐ๋ ์ปจํ ์ธ ๋ฅผ ํ์ํ๋ view(๊ฐ์ฅ ์์์ ์์นํ view, self.view)๋ฅผ ๊ด๋ฆฌํ๋ค. ์ด ์ปจํธ๋กค๋ฌ๋ ์ดํ๋ฆฌ์ผ์ด์ ์์ ํด๋น view์ Presentaion๊ณผ ๋ค์ด์ view์ ๋ํ ํ๋ฉด ์ ํ์ ๊ด๋ฆฌํ๋ค. ์๋ฅผ ๋ค์ด ๋ค๋น๊ฒ์ด์ ๋ฐ์ ํญ๋ฐ, ์ด์ธ ๋ค๋ฅธ presentation ๋์์ View Controller์ ์ํด ๊ด๋ฆฌ๋๋ฉด ๊ตฌํ๋๋ค. ๋๋ถ์ด View Controller๋ ๋ชจ๋ฌ View๋ฅผ ํ์ํ ์๋ ์๊ณ , ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๊ฒฝ๊ณ ์ ์๋ตํ ์ ์์ผ๋ฉฐ, ๋ฐฉํฅ์ด ๋ณ๊ฒฝ๋ ๋์ view๋ฅผ ํ์ ์ํฌ ์๋ ์๋ค.
iOS์์ View Controller๋ UIViewController์ ํ์ ํด๋์ค ์ธ์คํด์ค์ด๋ค. UIKit๋ ํน์ ๋ชฉ์ ์ ๊ฐ์ง ๋ค์ํ ์๋ธ View Controller ํด๋์ค๋ฅผ ์ ๊ณตํ๋ค. ์๋ฅผ ๋ค์ด UITableViewController๊ฐ ์๋ค.
View Controller๊ฐ Model๊ณผ view ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ค์ฌํ๊ธฐ ์ํด์๋ view์ controller์ ํ๋ ์์ํฌ ํด๋์ค๋ค์ ํ์ฅํด์ผํ๋ค.
View Controller๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ํ๋ ์์ํฌ ํ์ ์ ๋ํด delegate(์์์, ๋๋ฆฌ์ธ)๋ data source ๊ฐ์ฒด๋ก ์ฌ์ฉ๋๋ค. ์๋ฅผ ๋ค์ด UICollectionView.delegate๋ก View Controller๋ฅผ ํ ๋นํ์ฌ CollectionView์ ์์ ์ ๋์ ์ํํ๋ค.
Mediating Controller ์ค์ฌ ์ปจํธ๋กค๋ฌ (macOS)
Mediating Controller๋ View ๊ฐ์ฒด์ Model ๊ฐ์ฒด ๊ฐ์ ๋ฐ์ดํฐ ํ๋ฆ์ ์์ํ๊ฒ ํ๋ค. ์ฌ์ฉ์๊ฐ View ๊ฐ์ฒด์ ํ์๋ ๊ฐ์ ๋ณ๊ฒฝํ ๋, Mediating Controller๋ ์๋์ผ๋ก ๋ชจ๋ธ ๊ฐ์ฒด์ ์๋ก์ด ๊ฐ์ ์ ๋ฌํ๋ค. ๊ทธ๋ฆฌ๊ณ Model์ ํ๋กํผํฐ๊ฐ ๊ฐ์ ๋ณ๊ฒฝํ ๋, ์ปจํธ๋กค๋ฌ๋ ์ ์ ํ View ๊ฐ์ฒด๊ฐ ๊ทธ ๋ณ๊ฒฝ๋ ๊ฐ์ ๋ฐ์ํ์ฌ ํ๋ฉด์ ํ์ํ ์ ์๋๋ก ๋ณด์ฆํ๋ค. ๋ค๋ฅธ ์ปจํธ๋กค๋ฌ๋ค๊ณผ ๋ค๋ฅด๊ฒ Mediating Controller๋ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์ด๋ฌํ ์ด์ ์ ๋๋ค๋ฅธ ์ด์ ๋ก, Mediating Controller๋ Cocoa ๋ฐ์ธ๋ฉ ๊ธฐ์ ์ ์ฃผ์ ์์์ด๋ค.
๊ฐ๋ฐ์๋ ์ธํฐํ์ด์ค ๋น๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ถํฐ Mediating Controller๋ฅผ ๋๋๊ทธํ ํ ์ปจํธ๋กค๋ฌ์ ์ปจํธ๋กค๋ฌ์ View, Model ๊ฐ์ฒด๋ค ๊ฐ์ ๋ฐ์ธ๋ฉ์ ์ค์ ํ ๊ฐ์ฒด๋ค์ ๊ตฌ์ฑํ ์ ์๋ค.
'iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ iOS ] ํ๋ฉด ์บก์ณํ๊ธฐ - UIGraphicsRenderer (2) | 2023.12.22 |
---|---|
[ iOS ] ์ด๊ฑฐํ์ ์์๊ฐ์ผ๋ก ํํ ์ฌ์ฉํ๊ธฐ (2) | 2023.12.01 |
[ iOS ] MVC - 2 ) Model ๊ฐ์ฒด (0) | 2023.11.18 |
[ iOS ] MVC - 1) MVC๋? (1) | 2023.10.17 |
[ iOS ] Link Presentation ์์๋ณด๊ธฐ (0) | 2023.08.18 |