# ๋จ์ด ๋ป
์์ด ๋จ์ด์ ๋ป์ ๋จผ์ ์ดํด๋ณด๋, 'ํ๋ค'๋ค์. ๋ํ, ์ด ๋จ์ด๋, ๋น๋์ค์ ๋ํ ๋งฅ๋ฝ์์ ๋ณด๋ฉด, ๋๊ฐ๋ค์ ์๋ฏธ๋ ๋ฉ๋๋ค. ์ฆ, ์ธ๊ทธ์จ์ด๋ฅผ ํตํด, ํ์ ์คํฌ๋ฆฐ์ผ๋ก ์ด๋ํ ๊ฒ์ "๋๊ฐ๋", "๋์๊ฐ๋" ์ธ๊ทธ์จ์ด ์ ๋๋ค.
# ์คํฌ๋ฆฐ ๋๊ฐ๊ธฐ์ ์ฌ๋ฌ ๋ฐฉ๋ฒ
1. delegate๊ฐ ๋์ด, ์์ ์คํฌ๋ฆฐ์ ๋ค๋น๊ฒ์ด์ ์ปจํธ๋กค๋ฌ ๋ ํผ๋ฐ์ค๋ฅผ ์ด์ฉํด popํ๊ธฐ.
* ์ด ๋ฐฉ๋ฒ ๋ง์ด ์ฐ์ฃ .
* delegate protocol์ ์ ์ํ๊ณ ,
* ์์ ์คํฌ๋ฆฐ์ ๊ทธ ํ๋กํ ์ฝ์ ์ฑํํ๊ณ ,
* ๋ธ๋ฆฌ๊ฒ์ดํธ ๋ฉ์๋๋ฅผ ๊ตฌํํ๊ณ ,
* ์ธ๊ทธ์จ์ด prepareํ ๋ ๋ค์ ์คํฌ๋ฆฐ์ ๋ธ๋ฆฌ๊ฒ์ดํธ๊ฐ ๋๊ณ
* ๊ทธ ๋ค์ ์คํฌ๋ฆฐ์์ '์๋ฃ' ๋ฒํผ์ ๋ํ ์ก์ ๋ฉ์๋๋ก์, delegate์ ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
* ์ด ์์ ์, ๊ทธ ๋ค์ ์คํฌ๋ฆฐ์์ ์์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ์คํฌ๋ฆฐ์ ๊ฐ์ ธ์ ์ฌ๋ฌ ์ฒ๋ฆฌ๋ ํ ์ ์๊ตฌ์.
ํ์ง๋ง, ์๊ฐํด๋ณด๋ฉด, ๋งค์ฐ ๊ท์ฐฎ์ต๋๋ค.
" ๊ฑ ๋ค์ ์คํฌ๋ฆฐ๊ฐ์ ์ด๋ค ๊ฑฐ ์ ํํ๋ฉด, ๊ทธ๊ฑฐ ๊ฐ์ ธ์จ๋ค " ์ ๋ ๊ตฌํํ๋ ๋ฐ, ์ ํฌ๊ฐ ์ ๋ ๊ฒ๊น์ง ํด์ผ๊ฒ ์ต๋๊น?
unwind segue ๊ตฌํ
* ๋ค์ ์คํฌ๋ฆฐ์ผ๋ก๋ถํฐ ์์ ์คํฌ๋ฆฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์์ด์ผ ํ๋ค !!
# ๋ฐฉ๋ฒ
์์๋ฅผ ํตํด, ์ค๋ช ํ ๊ฒ์.
1. ์ฐ์ ์์ ์คํฌ๋ฆฐ์์, ์ก์ ๋ฉ์๋๋ฅผ ์ ์ํ๊ณ , ์ธ๊ทธ์จ์ด์ ์์ค๋ฅผ, ๊ทธ ๋ค์ ์คํฌ๋ฆฐ์ผ๋ก ์ ์ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ์ด๋ ๊ฒ์ !!
@IBAction func categoryPickerDidPickCategory(_ segue: UIStoryboardSegue) {
let controller = segue.source as! CategoryPicker
categoryName = controller.selectedCategoryName
print(categoryName)
categoryLabel.text = categoryName
}
* ๊ทธ ๋ค์ ์คํฌ๋ฆฐ์์ ์ด unwind ์ธ๊ทธ์จ์ด๋ฅผ ์คํํ ๋, ์ด ์์ ์คํฌ๋ฆฐ์ด ์ด๋ค ์ํ์ค๋ฅผ ์ฒ๋ฆฌํด์ผํ๋ ์ง ์จ์ค๋๋ค. ์ฃผ๋ก, ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ์ชฝ์ผ๋ก ์ฌ์ฉํ๊ฒ ์ฃ . ์ฌ๊ธฐ์๋ ํฝ ๋ฐ์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ, ์์ ์ ์ธ์คํด์ค ๋ณ์์ ์ ์ ์ฅํ๋ ๊ฑธ๋ก ์ผ๋ค์.
2. ๊ทธ ๋ค์ ์คํฌ๋ฆฐ์์, ์ธ๊ทธ์จ์ด ํธ๋ฆฌ๊ฑฐ๋ฅผ unwind segue ์์ด์ฝ( ๋งจ ์ค๋ฅธ์ชฝ )์ ์ฐ๊ฒฐํ์ฌ, ์ ์ก์ ๋ฉ์๋์ ์ฐ๊ฒฐํฉ๋๋ค.
3. ๋ณด๋ด๋ ์คํฌ๋ฆฐ์์, prepare for ๊ตฌํ
* ํด๋น ์ก์ ๋ฉ์๋๊ฐ ์คํ๋๊ธฐ ์ ์, ๋ณด๋ด๋ ์ชฝ์์, ๋ฏธ๋ฆฌ ์คํ๋์ด์ผํ ๋ด์ฉ์ด ์๋ค๋ฉด, prepare๋ฅผ ๊ตฌํํฉ๋๋ค.
์์). ์ ๋ ์ ๊ณผ ๋์์ unwind segue๊ฐ ์คํ๋๊ณ , ์์ ์คํฌ๋ฆฐ์ ๋ฐ์ selectedCategoryName๊ฐ์ ์ทจํ๋ ๊ฒ์ผ๋ก ๋์ด์์ด, ํน์ ์ ์ด ์ ํ๋ ๋ selectedCategoryName์ด ์ ํํ ์ธ๋ฑ์ค์ ๋ฐ๋ผ ์ ๋ฐ์ดํธ ๋๋ ์ ์ฐจ๊ฐ ์์์ต๋๋ค. ๊ทธ ๊ฐ๊ทน์ ๋ฉ์์ฃผ๋ ๊ณณ์ด, ๋ฐ๋ก ๋ณด๋ด๋ ์ชฝ์ "prepare(for: sender)" ๋ฉ์๋๊ฐ ๋ ์ ์๊ฒ ์ต๋๋ค.
๋ณต์กํด ๋ณด์ด์ง๋ง, ๋ธ๋ฆฌ๊ฒ์ดํธ๋ณด๋ค ์กฐ๊ธ ๊ฐ๋จํ ๊ฒ ๊ฐ์ต๋๋ค.
1. ๋ฐ์ ๋ฐ์ดํฐ๋ก ๋ญํ ์ง action method ๊ตฌํ
2. ๋ค์ ์คํฌ๋ฆฐ์์ ์ธ์์ธ๋ ์ธ๊ทธ์จ์ด ์์ด์ฝ์ ์ปจํธ๋กค ๋๋๊ทธ
3. ์ธ๊ทธ์จ์ด ์คํ ์ ์ ์ ํ ๊ฒ ์๋ค๋ฉด prepare
๊ทธ๋ผ ์ด๋ง.