๐ŸŽ ์•„์ด-์˜ค-์—์Šค/๐Ÿ“ฑ iOS ๊ฐœ๋ฐœ

[iOS] ๋ฉ”์ดํŠธ๋Ÿฌ๋„ˆ: ๋ชจ๋“  ํ™”๋ฉด์—์„œ ์ดˆ๋Œ€์žฅ์„ ๋ฐ›๊ณ  ๋‹ฌ๋ฆฌ๊ธฐ ์‹œ์ž‘ํ•˜๊ธฐ, ์‹ฌ์ง€์–ด ์•ฑ์ด ๊บผ์ ธ์žˆ์–ด๋„!

๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด 2021. 12. 4. 19:04

๋ฉ”์ดํŠธ ๋Ÿฌ๋„ˆ ์•ฑ ๊ฐœ๋ฐœ ๊ณผ์ •์„ ๊ณต์œ ํ•˜๋Š” ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค!

 

GitHub - boostcampwm-2021/iOS06-MateRunner: ํ•จ๊ป˜ ๋‹ฌ๋ฆฌ๋Š” ์ฆ๊ฑฐ์›€, Mate Runner ๐Ÿƒ๐Ÿป‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ

ํ•จ๊ป˜ ๋‹ฌ๋ฆฌ๋Š” ์ฆ๊ฑฐ์›€, Mate Runner ๐Ÿƒ๐Ÿป‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ. Contribute to boostcampwm-2021/iOS06-MateRunner development by creating an account on GitHub.

github.com

์—ฌ๊ธฐ์„œ ์ €ํฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ์ž์„ธํžˆ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”!

 

๊ทธ๋Ÿผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

 

๊ตฌํ˜„ํ•˜๊ณ ์ž ํ–ˆ๋˜ ๊ธฐ๋Šฅ 

์ดˆ๋Œ€์žฅ๊ณผ ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ, ์‚ฌ์šฉ์ž์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ํ•จ๊ป˜ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ–ˆ๋˜ ๊ฒƒ์ด ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ํƒญ ํ•˜๋Š” ๊ฒƒ์„ ํ†ตํ•ด ์–ด๋–ค ํ™”๋ฉด์—์„œ๋“  ์ดˆ๋Œ€์žฅ์„ ๋ฐ›๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์•ฑ์ด ์ข…๋ฃŒ๋œ ์ƒํ™ฉ์—์„œ๋„์š”. ๊ทธ๋ฆฌ๊ณ  ์ดˆ๋Œ€์žฅ์—์„œ ์ˆ˜๋ฝ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์–ด๋–ค ํ™”๋ฉด์—์„œ๋“  ๊ณง๋ฐ”๋กœ ๋‹ฌ๋ฆฌ๊ธฐ๊ฐ€ ์‹œ์ž‘๋˜๋„๋ก ํ•ด์•ผ ํ–ˆ์ฃ .

 

์šฐ๋ฆฌ ์•ฑ์€ ๊ฐ ํƒญ์ด ์ฝ”๋””๋„ค์ดํ„ฐ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ๊ณ , ํƒญ์— ๋Œ€ํ•œ ์ฝ”๋””๋„ค์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ถ€๋ชจ ์ฝ”๋””๋„ค์ดํ„ฐ์ธ TabBarCoordinator๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ฝ”๋””๋„ค์ดํ„ฐ 

์šฐ๋ฆฌ ์•ฑ์˜ ์ฝ”๋””๋„ค์ดํ„ฐ๋Š” ์ด๋ ‡๊ฒŒ ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋””๋„ค์ดํ„ฐ ํ”„๋กœํ† ์ฝœ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜๋˜์–ด ์žˆ๋Š”๋ฐ์š”,

 

๊ฐ ํƒญ์„ ๋‚˜ํƒ€๋‚ด๋Š” TabBarCoordinator์˜ ์ž๋…€ ์ฝ”๋””๋„ค์ดํ„ฐ๋“ค์€ ๊ฐ๊ฐ ์ž์‹ ์˜ NavigationController๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด ์ฝ”๋“œ๋Š” ์‹ค์ œ๋กœ ํƒญ ๋ฐ” ์ฝ”๋””๋„ค์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•จ๊ป˜ ๋ถˆ๋ฆฌ๋Š” ๋ฉ”์„œ๋“œ๋“ค์ž…๋‹ˆ๋‹ค. createTabNavigationController์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ํƒญ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด UINavigationController๋ฅผ ๋งŒ๋“ค๊ณ , ์ฝ”๋””๋„ค์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. 

 

๊ทธ๋ ‡๋‹ค๋ฉด ๊ฒฐ๊ตญ ํƒญ ๋ฐ”๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋‚ด๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์™€, ๊ฐ ํƒญ์ด ๊ฐ€์ง„ ๋‚ด๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ดˆ๋Œ€์žฅ ๋ทฐ๋ฅผ ํƒญ ๋ฐ”์˜ ๋‚ด๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์—๊ฒŒ present ํ•˜๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ธฐ์กด ํ™”๋ฉด์ด ๊ทธ๋Œ€๋กœ ์œ ์ง€๋œ ์ฑ„๋กœ ์ƒˆ๋กœ์šด ํ™”๋ฉด์ด ๊ทธ ์œ„์— ์˜ฌ๋ผ์˜ค๊ฒ ์ฃ .

 

ํƒญ ๋ฐ”์˜ ๋‚ด๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํƒญ ๋ฐ” ์ฝ”๋””๋„ค์ดํ„ฐ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋‹ˆ ์ดˆ๋Œ€์žฅ์ด ๋„์ฐฉํ•˜๋ฉด ํƒญ ๋ฐ” ์ฝ”๋””๋„ค์ดํ„ฐ์—๊ฒŒ ์•Œ๋ ค์ฃผ๋ฉด ๋˜๊ฒ ๋„ค์š”!

 

์ฝ”๋””๋„ค์ดํ„ฐ์—๊ฒŒ ์ดˆ๋Œ€๊ฐ€ ์™”๋‹ค๊ณ  ์•Œ๋ ค์ฃผ๊ธฐ 

์ด์ œ ๋ฌธ์ œ๊ฐ€ ๋” ์ž‘์€ ๋ฌธ์ œ๋กœ ๋ช…ํ™•ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. "์‚ฌ์šฉ์ž๊ฐ€ ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ํƒญ ํ•˜๋ฉด ํƒญ ๋ฐ” ์ฝ”๋””๋„ค์ดํ„ฐ์—๊ฒŒ ์•Œ๋ฆฐ๋‹ค!"

 

ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ํƒญ ํ•˜๋ฉด ์–ด๋””์—์„œ ํ‘ธ์‹œ ์•Œ๋ฆผ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์„๊นŒ์š”? 

AppDelegate์—์„œ ํ‘ธ์‹œ ์•Œ๋ฆผ์— ๋Œ€ํ•œ delegate ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ํƒญ ํ–ˆ์„ ๋•Œ์— ๋Œ€ํ•œ ๋™์ž‘์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ AppDelegate์—์„œ ์ดˆ๋Œ€์žฅ์„ ๋งŒ๋“ค์–ด์„œ ํƒญ ๋ฐ” ์ฝ”๋””๋„ค์ดํ„ฐ์— ์ฃผ์ž…์‹œ์ผœ์ฃผ๋ฉด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋˜ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ์ตœ์ƒ์œ„ ์ฝ”๋””๋„ค์ดํ„ฐ์ธ AppCoordinator๋Š” AppDelegate๊ฐ€ ์•„๋‹Œ SceneDelegate์—์„œ ์ƒ์„ฑ๋œ๋‹ค๋Š” ๊ฒƒ์ด๊ณ , TabBarCoordinator๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด AppCoordinator์— ์ ‘๊ทผ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

 

AppDelegate์—์„œ SceneDelegate์— ์ ‘๊ทผํ•ด AppCoordinator์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์ง€๋งŒ, ์ด ์ž‘์—…๊ณผ ๊ทธ ์ดํ›„์— TabBarCoodinator๋ฅผ ๊ฒ€์ƒ‰ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์ด ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง„๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  AppDelegate์™€ SceneDelegate๊ฐ€ ๋‹จ์ˆœํžˆ ์•Œ๋ฆผ์„ ์œ„ํ•œ ์šฉ๋„๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ๊ฒƒ์ด ์–ด์ƒ‰ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด ์ด๋ฒˆ์—๋Š” NotificationCenter๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

AppDelegate์—์„œ๋Š” ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ๋ฐ›๊ณ  ํ•ด๋‹น ์•Œ๋ฆผ์˜ UserInfo์— ๋“ค์–ด์žˆ๋Š” ๋‚ด์šฉ์ด ์ดˆ๋Œ€์žฅ ๋ชจ๋ธ๋กœ ๋ณ€ํ™˜์ด ๋œ๋‹ค๋ฉด, NotificationCenter๋กœ ์•Œ๋ฆผ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

ํƒญ ๋ฐ” ์ฝ”๋””๋„ค์ดํ„ฐ๋Š” ์ด ์•Œ๋ฆผ์— ๋Œ€ํ•œ ์˜ต์ €๋ฒ„๋ฅผ ๋“ฑ๋ก์„ ํ•ด๋‘๊ณ ,

์•Œ๋ฆผ์ด ์˜ฌ ๋•Œ๋งˆ๋‹ค ์ดˆ๋Œ€์žฅ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๊ทธ์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•ด์ค€ ๋’ค์— ์ž์‹ ์˜ ํƒญ ๋ฐ” ์ปจํŠธ๋กค๋Ÿฌ์— ์ดˆ๋Œ€์žฅ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ present ํ•ฉ๋‹ˆ๋‹ค. 

 

์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๋ฌธ์ œ์ธ "์‚ฌ์šฉ์ž๊ฐ€ ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ํƒญ ํ•˜๋ฉด ํƒญ ๋ฐ” ์ฝ”๋””๋„ค์ดํ„ฐ์—๊ฒŒ ์•Œ๋ฆฐ๋‹ค!"๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

 

์ง !

 

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ํ˜„์žฌ ํ™”๋ฉด๊ณผ๋Š” ์ƒ๊ด€์—†์ด ์–ด๋””์„œ๋‚˜ ์ดˆ๋Œ€์žฅ์ด ์ž˜ ๋ณด์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋‹ฌ๋ฆฌ๊ธฐ ์‹œ์ž‘ํ•˜๊ธฐ

์ดˆ๋Œ€์žฅ์—์„œ ๊ฑฐ์ ˆ์„ ๋ˆ„๋ฅด๋ฉด present ํ–ˆ๋˜ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ dismiss ์‹œํ‚ค๋ฉด ๋˜์ง€๋งŒ, ์ˆ˜๋ฝํ–ˆ์„ ๋•Œ๋Š” ๋‹ฌ๋ฆฌ๊ธฐ ์นด์šดํŠธ ๋‹ค์šด ํ™”๋ฉด์ด ์‹œ์ž‘๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋‹ฌ๋ฆฌ๊ธฐ ์นด์šดํŠธ ๋‹ค์šด ํ™”๋ฉด๊ณผ ๋‹ฌ๋ฆฌ๊ธฐ ํ™”๋ฉด, ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ณผ ํ™”๋ฉด์€ ํ™ˆ ํƒญ์— ์†ํ•ด์ ธ ์žˆ์ฃ . ๋งŒ์•ฝ ์ดˆ๋Œ€์žฅ์„ ํ™ˆ ํƒญ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ํ™”๋ฉด์—์„œ ์ˆ˜๋ฝํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”?

 

ํ˜„์žฌ ํ™”๋ฉด์—์„œ ๋‹ฌ๋ฆฌ๊ธฐ ์ค€๋น„ ํ™”๋ฉด๋ถ€ํ„ฐ ๊ณ„์† push ํ•ด๊ฐˆ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, depth ๊ฐ€ ๋„ˆ๋ฌด ๊นŠ์–ด์งˆ ์ˆ˜ ์žˆ๊ณ , ์šด๋™์ด ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์–ด๋””๊นŒ์ง€ pop ํ•ด์•ผ ํ• ์ง€๋„ ์• ๋งคํ•ด์ง‘๋‹ˆ๋‹ค. ๋˜, ์ด๋ฏธ ์šฐ๋ฆฌ๋Š” ํ™”๋ฉด์˜ ์ „ํ™˜์„ ์ฝ”๋””๋„ค์ดํ„ฐ์—๊ฒŒ ๋ชจ๋‘ ๋งก๊ธฐ๊ธฐ๋กœ ํ–ˆ์œผ๋‹ˆ ๋ชจ๋“  ์ฝ”๋””๋„ค์ดํ„ฐ์— ๋‹ฌ๋ฆฌ๊ธฐ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ํ•จ์ˆ˜๋“ค์„ ์ •์˜ํ•ด๋‘๋Š” ๊ฑด ๊ต‰์žฅํžˆ ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋‹ฌ๋ฆฌ๊ธฐ๋Š” ํ•ญ์ƒ ํ™ˆ ํƒญ์—์„œ ์‹œ์ž‘๋˜๋„๋ก ํ•˜๊ณ , ๋Œ€์‹  ์ˆ˜๋ฝ ๋ฒ„ํŠผ์ด ํƒญ ๋˜์—ˆ์„ ๋•Œ๋Š” ํƒญ์ด ๋ฐ”๋€Œ๋ฉด์„œ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์ฃผ๋„ํ•˜๋Š” ์ฝ”๋””๋„ค์ดํ„ฐ๊ฐ€ ํ™ˆ ํƒญ์˜ ์ฝ”๋””๋„ค์ดํ„ฐ๊ฐ€ ๋˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ดˆ๋Œ€์žฅ์„ ๋ฐ›๋Š” TabBarCoordinator๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ดˆ๋Œ€์žฅ๊ณผ ๊ด€๋ จ๋œ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ดˆ๋Œ€์žฅ์—์„œ ์ˆ˜๋ฝ ๋ฒ„ํŠผ์ด ํƒญ ๋˜๋ฉด invitationDidAccept์™€ ํ•จ๊ป˜ ์ดˆ๋Œ€์žฅ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ์ •๋ณด๋ฅผ ๋‹ฌ๋ฆฌ๊ธฐ ์„ค์ • ์ •๋ณด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ „๋‹ฌํ•˜๋Š”๋ฐ์š”, TabBarCoordinator๋Š” ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์•„๋ž˜์ฒ˜๋Ÿผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

1. ๋จผ์ € ์ง€๊ธˆ ์—ด๋ ค์žˆ๋˜ ์ดˆ๋Œ€์žฅ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ dismiss ํ•˜๊ณ ,

2. ํƒญ ๋ฐ”์˜ ํ˜„์žฌ ํƒญ์„ ํ™ˆ ํƒญ์œผ๋กœ ๋ณ€๊ฒฝํ•œ ๋’ค์—,

3. ํ™ˆ ํƒญ์— ๋Œ€ํ•œ ์ฝ”๋””๋„ค์ดํ„ฐ์ธ HomeCooridnator๋ฅผ ์ž๋…€ ์ฝ”๋””๋„ค์ดํ„ฐ ๋ฆฌ์ŠคํŠธ์—์„œ ์ฐพ์•„์„œ,

4. ๋‹ฌ๋ฆฌ๊ธฐ๋ฅผ ์‹œ์ž‘์‹œํ‚ต๋‹ˆ๋‹ค.

์ด ์ด๋ฏธ์ง€์—์„œ ์ˆ˜๋ฝ์„ ํƒญ ํ–ˆ์„ ๋•Œ ์ˆœ๊ฐ„์ ์œผ๋กœ ํ™ˆ ํ™”๋ฉด์ด ๋ณด์ด๋Š” ๊ฒŒ ๋ฐ”๋กœ ์ด ๋•Œ๋ฌธ์ด์ฃ ..! ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ๋ถˆํŽธํ•จ์„ ๋Š๋‚„ ์ •๋„๋กœ ํฐ ๋”œ๋ ˆ์ด๊ฐ€ ์•„๋‹ˆ๊ณ , ๋‹ฌ๋ฆฌ๊ธฐ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ ํ™ˆ ํƒญ์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„์˜จ๋‹ค๋Š” ๊ฒƒ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ„์ ‘์ ์œผ๋กœ ์•Œ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ด ๊ณผ์ •๋“ค์„ ๊ทธ๋ฆผ์œผ๋กœ ์ •๋ฆฌํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์•ฑ์ด ์ข…๋ฃŒ๋˜์–ด ์žˆ์„ ๋•Œ ์•Œ๋ฆผ์„ ๋ฐ›์œผ๋ฉด?

์•ฑ์ด ์ข…๋ฃŒ๋˜์–ด์žˆ์„ ๋•Œ ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ๋ฐ›์œผ๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? 

 

์•ฑ์˜ ์‹œ์ž‘๊ณผ ํ•จ๊ป˜ ์ดˆ๋Œ€์žฅ์„ ๋ฐ›์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฑ์ด ์ผœ์ ธ ์žˆ์„ ๋•Œ์™€์˜ ์ƒํ™ฉ๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด์ „ ์ƒํ™ฉ์—์„œ๋Š” AppDelegate์—์„œ Notification์„ ๋ณด๋‚ด ํ™”๋ฉด์„ ๋„์› ์—ˆ๋Š”๋ฐ, ์•„์ง ํ™”๋ฉด์˜ UI๊ฐ€ ๊ทธ๋ ค์ง€๊ธฐ ์ „์ด๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๋Œ€์žฅ์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

 

์ด ๋ฌธ์ œ ๋•Œ๋ฌธ์— ๋งŽ์€ ์‹œ๊ฐ„์„ ์Ÿ์•˜๋Š”๋ฐ, ์‹ค์ œ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณธ ๊ฒฐ๊ณผ, Notification์ด ๋ฐœํ–‰๋˜๋Š” ์‹œ์ ์ด ์•„์ง ์•ฑ์ด ๋Ÿฐ์น˜ ์Šคํฌ๋ฆฐ์— ์žˆ๋Š” ์‹œ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ Notification์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ถˆ๊ฐ€๋Šฅํ–ˆ๊ณ  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๊ตฌ์ƒํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. 

 

๋ง‰ ์‹คํ–‰๋˜๋ฉด ์–ด์ฐจํ”ผ ํ™ˆ ํƒญ์ด์ž–์•„..?

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ด๋””์–ด๋Š” ์•ฑ์ด ์ฒ˜์Œ ์‹คํ–‰๋˜์—ˆ์„ ๋•Œ๋Š” ํ•ญ์ƒ ํ™ˆ ํƒญ์ด ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์—์„œ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ €ํฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๋ฌธ์ œ ํ•ด๊ฒฐ์˜ ํžŒํŠธ๋Š”

 

1. ์ดˆ๋Œ€์žฅ์€ ํ™ˆ ํ™”๋ฉด์ด ๊ทธ๋ ค์ง€๊ธฐ ์ „์— ๋„์ฐฉํ•œ๋‹ค.

2. ์•ฑ์„ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋ฉด ํ•ญ์ƒ ํ™ˆ ํ™”๋ฉด๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.

 

์ด ๋‘ ๊ฐ€์ง€์˜€์Šต๋‹ˆ๋‹ค. 

 

๋”ฐ๋ผ์„œ ์ €ํฌ๋Š” ํ™”๋ฉด์ด ๊ทธ๋ ค์ง€๊ธฐ ์ „์— ์ดˆ๋Œ€์žฅ์„ ๋„์šฐ๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ™ˆ ํ™”๋ฉด์— ๋‚จ๊ฒจ๋‘๊ณ , ํ™ˆ ํ™”๋ฉด์„ ViewDidAppear ๋‹จ๊ณ„์—์„œ ์ด ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ์ดˆ๋Œ€์žฅ์„ ๋„์›Œ์•ผ ํ•œ๋‹ค๋ฉด ๋ทฐ๊ฐ€ ๋‹ค ๊ทธ๋ ค์ง„ ๋’ค์— ๋„์šฐ๋„๋ก ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฅผ ์œ„ํ•ด ๋จผ์ € ํ™ˆ ํ™”๋ฉด์˜ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์— ์ดˆ๋Œ€์žฅ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•œ ํ”„๋กœํผํ‹ฐ๋ฅผ ์˜ต์…”๋„๋กœ ๋งŒ๋“ค์–ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ฉ”์‹œ์ง€๋กœ ์‚ผ์•„ nil์ด๋ฉด ์ดˆ๋Œ€์žฅ์„ ๋„์šฐ์ง€ ์•Š๊ณ , ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋“ค์–ด์žˆ์œผ๋ฉด ์ดˆ๋Œ€์žฅ์„ ๋„์šฐ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ดˆ๋Œ€์žฅ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฃผ์ž…์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์€ SceneDelegate์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

์•ฑ์ด ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ํƒญ ํ•ด ์‹œ์ž‘๋˜๋ฉด SceneDelegate์˜ connectionOptions ์—๋Š” notifiactionResponse์— ํ‘ธ์‹œ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ๋“ค์–ด์˜ต๋‹ˆ๋‹ค.

 

์ด๋ฅผ ์ด์šฉํ•ด ์•ฑ์ด ์‹œ์ž‘๋  ๋•Œ notifiactionResponse๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•ด์„œ ์ดˆ๋Œ€์žฅ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ™ˆ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ ํ”„๋กœํผํ‹ฐ์— ์ฃผ์ž…์‹œ์ผœ์ค๋‹ˆ๋‹ค.

ํ™ˆ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํ™”๋ฉด์ด ๋‹ค ๊ทธ๋ ค์ง„ ์ดํ›„์— ํ”„๋กœํผํ‹ฐ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์กด์žฌํ•˜๋ฉด ์ดˆ๋Œ€์žฅ์„ ํ™”๋ฉด์— ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•œ ๋ฒˆ ์‚ฌ์šฉ๋œ ์ดˆ๋Œ€์žฅ์€ ํ™”๋ฉด์— ๋‹ค์‹œ ๊ทธ๋ ค์ง€์ง€ ์•Š๊ฒŒ ์ง€์›Œ๋‘ก๋‹ˆ๋‹ค.

 

๋งˆ๋ฌด๋ฆฌ

์ด๋ ‡๊ฒŒ ํ•ด์„œ ์ €ํฌ ์•ฑ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ๊บผ๋‘์–ด๋„, ์—ฌ๋Ÿฌ ํ™”๋ฉด์—์„œ ์•ฑ์„ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋„ ์ดˆ๋Œ€์žฅ์„ ๋ฐ›๊ณ  ๋‹ฌ๋ฆฌ๊ธฐ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๊ต‰์žฅํžˆ ๋‹จ์ˆœํ•˜๊ฒŒ ํ•ด๊ฒฐ๋  ์ค„ ์•Œ์•˜๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๋” ๊ณ ๋ฏผํ•  ๊ฒƒ๋„ ๋งŽ๊ณ  ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ์—ญ์‹œ ์‚ฌ์šฉ์ž๊ฐ€ ํŽธํ•˜๋ ค๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ถˆํŽธํ•ด์•ผ ํ•˜๋‚˜ ๋ด์š”..!

 

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ €ํฌ ํ”„๋กœ์ ํŠธ๋Š” ์—ฌ๊ธฐ์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”!

https://github.com/boostcampwm-2021/iOS06-MateRunner

 

GitHub - boostcampwm-2021/iOS06-MateRunner: ํ•จ๊ป˜ ๋‹ฌ๋ฆฌ๋Š” ์ฆ๊ฑฐ์›€, Mate Runner ๐Ÿƒ๐Ÿป‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ

ํ•จ๊ป˜ ๋‹ฌ๋ฆฌ๋Š” ์ฆ๊ฑฐ์›€, Mate Runner ๐Ÿƒ๐Ÿป‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ. Contribute to boostcampwm-2021/iOS06-MateRunner development by creating an account on GitHub.

github.com