ํฐ์คํ ๋ฆฌ ๋ทฐ
Coordinator ํจํด์ ๋ง๋ ์ฌ๋์ด ์์ฑํ ์ ์ ์ด์ ์ ๊ฐ๋ ์๊ฐ ์ ๋๋ค.
https://khanlou.com/2015/01/the-coordinator/
์ฐ์์ด๋ ์ฝ๋๋ฅผ ๋ณด๊ธฐ์ ์์
์ด๋ค ๊ฐ๋ (์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ ค๊ณ )์ผ๋ก ๋ง๋ค์๋์ง ์ค๋ช ๋์ด ์๋ค์
Coordinator ํจํด์ด๋
์ฌ๋ฌ VC๊ฐ Navigation์ ์ด๋์ด๋ ๋ฐ์ดํฐ, ์ด๋ฒคํธ์ ์ ๋ฌ์ ๊น๋ํ๊ณ ๋ถ๋ฆฌ๋ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๊ฐ VC๋ Coordinator ์ ์ฐ๊ฒฐ๋์ด์์ต๋๋ค.
๊ทธ๋์ Coordinator๋ฅผ
VC๊ฐ ์ค์ฌ์ ์ญํ ์ ํ๊ณ present์ dismiss๋ฅผ ์ ์ดํ๋ ์ญํ (ํ๋กํ ์ฝ)๋ก ๋ด๋ ๋ ๊ฒ ๊ฐ์ต๋๋ค
๊ฐ๋จํ ์์์ ๋๋ค. (์ 3๊ฐ์ง๋ฅผ ์ ์ฉ)
Home VC์์ ํญํ์๋ Detail VC๋ก ๋์ด๊ฐ๋ ํ๋ฉด์ ํ์ Coordinator๋ฅผ ํ์ฉํ์ฌ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.
protocol Coordinator {
func start()
}
1) ๋จผ์ base coordinator ํ๋กํ ์ฝ์ ๋ง๋ค์ด ์ค๋๋ค.
2) Home coordiantor ์ ๊ตฌํํ๊ณ , base coordinator๋ฅผ ์ฑํํฉ๋๋ค.
class HomeCoordinator: Coordinator {
var navigationController: UINavigationController
init(navigationController: UINavigationController) {
self.navigationController = navigationController
}
func start() {
let homeVC = HomeViewController(coordinator: self)
homeVC.coordinator = self
navigationController.pushViewController(homeVC, animated: true)
}
func showDetail(for item: String) {
let detailCoordinator = DetailCoordinator(navigationController: navigationController, item: item)
detailCoordinator.start()
}
}
HomeCoordinator์๋
Navigator๋ฅผ ๋ฐ์์ ๊ทธ Navigator๋ก HomeVC๋ฅผ ๋ณด์ฌ์ฃผ๊ฑฐ๋,
DeatilVC๋ฅผ ๋ณด์ฌ์ค๋๋ค.
(HomeVC์ ๋์ผํ๊ฒ Detail Coordinator์์ DetailVC๊ฐ ๋ณด์ฌ์ง๋๋ก ๊ตฌํํฉ๋๋ค.)
Home coordiantor์ ๋ง์ฐฌ๊ฐ์ง๋ก base coordinator๋ฅผ ์ฑํํ
Detail Coordinator ์ ๋๋ค.
class DetailCoordinator: Coordinator {
var navigationController: UINavigationController
var item: String
init(navigationController: UINavigationController, item: String) {
self.navigationController = navigationController
self.item = item
}
func start() {
let detailVC = DetailViewController(item: item)
detailVC.coordinator = self
navigationController.pushViewController(detailVC, animated: true)
}
}
3) ๋ง์ง๋ง์ผ๋ก HomeVC๋ฅผ ๊ตฌํํฉ๋๋ค.
HomeCoordinator๋ฅผ ๊ฐ์ ธ์ค๊ณ ,
ํญํ์๋ Home coordinator์์ Detail VC๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ด๋ฒคํธ๋ฅผ ๋ถ๋ฌ์ต๋๋ค.
class HomeViewController: UIViewController {
weak var coordinator: HomeCoordinator?
// ... your other code ...
func didSelectItem(_ item: String) {
coordinator?.showDetail(for: item)
}
}
// Detail VC
class DetailViewController: UIViewController {
weak var coordinator: DetailCoordinator?
var item: String
init(item: String) {
self.item = item
super.init(nibName: nil, bundle: nil)
}
// ... your other code ...
}
๊ฐ๋จํ ์์ ๋ฅผ ํตํด Coordinator ํจํด์ ๋ํด ์์๋ณด์์ต๋๋ค.
์ด๋ ๊ฒ ์ฐ๋ ์ด์ ์ ์ฅ์ ์ผ๋ก๋
1. ๊ด์ฌ์ฌ ๋ถ๋ฆฌ
2. Navigation์ ํ๋ฆ ๊ด์ ์์ VC๊ฐ ์์กด์ฑ์ ๋ฎ์ถ ์ ์๋ค. (Detail VC๊ฐ์ ํธ์ถ)
3. ๊ทธ๋ฆฌ๊ณ ๋ก๊ทธ์์, ๋ก๊ทธ์ธ ๋ฑ ์ด๋ฐ ์ํ๊ฐ๋ค์ Coordinator์์ ๊ด๋ฆฌํ ์ ์์ด์ ๊น๋ํ๋ค.
๋ฑ์ด ์๋๊ฒ ๊ฐ์ต๋๋ค.
๋ถ์กฑํ ๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
ํ๋ฆฐ ๋ถ๋ถ์ด๋ ๊ฐ์ ์ฌํญ ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค:)
์ถ๊ฐ๋ก)
zeddios๋์ด ์์ฑํ์
coordinator-pattern ๊ธ์์ ์ถ๊ฐ์ ์ธ ์์๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ์ข์๊ฒ ๊ฐ์ต๋๋ค.
https://zeddios.medium.com/coordinator-pattern-bf4a1bc46930
- Total
- Today
- Yesterday
- rag ๊ธฐ๋ฐ llm ์ฑ๋ด
- swift ์๊ฐ
- swift queryitem encode
- llm csv
- swift get excel
- swift filemanager excel
- swift filemanager get excel
- llm pdf rag
- swift urlsession ๊ณตํตํ
- focus timer ์ดํ
- swift network module
- swift urlsession module
- filemanager excel read
- chatgpt rag llm
- ํ์ด๋จธ ์ดํ
- swift ๋คํธ์ํฌ ๋ชจ๋ํ
- swift excel read
- swift network refactoring
- google timer application
- ๊ตฌ๊ธ ํ์ด๋จธ ์ดํ
- deep timer
- swift ์์ ์ฝ๊ธฐ
- swift urlsession network module
- rag llm pdf
- swift ์์ ๊ฐ์ ธ์ค๊ธฐ
- rag ๊ธฐ๋ฐ llm
- swift urlcomponent encode
- swift urlsession refactoring
- swift network ๊ณตํตํ
- google timer ์ดํ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |