iOS/Swift

[swift] NavigationController์˜ setViewController ์‚ฌ์šฉ๋ฐฉ๋ฒ•

๊ฒฝํ‘ธ 2022. 2. 18. 12:01
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š”~

 

์˜ค๋Š˜์€ ๊ฐœ๋ฐœ ์ค‘์— ๊ฒช์—ˆ๋˜ ์ด์Šˆ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : )

 

์ด์Šˆ๊ฐ€ ์–ด๋””์„œ ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์Šคํฌ๋ฆฐ์ƒท์„ ๋ณด๋ฉด์„œ ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ™ˆ์—์„œ ์šฐ์ธก ํ•˜๋‹จ ๋ฒ„ํŠผ(์ฐพ๊ธฐ)์„ ๋ˆ„๋ฅด๋ฉด

์ทจ๋ฏธ ์ž…๋ ฅ ํ™”๋ฉด์œผ๋กœ, ์ƒˆ์‹น ์ฐพ๊ธฐ๋ฅผ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด ์ฃผ๋ณ€ ์นœ๊ตฌ๋ฅผ ์ฐพ๋Š” ํ”Œ๋กœ์šฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ™ˆ ์ทจ๋ฏธ์ž…๋ ฅ ์นœ๊ตฌ์ฐพ๊ธฐ



 

์ด๋ฅผ ์˜์ƒ์œผ๋กœ ํ™•์ธํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

ezgif com-gif-maker

 

 

๊ฒฐ๊ณผ์ ์œผ๋กœ ์ €์˜ ์ด์Šˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๊ธฐ๋ณธ์ ์ธ ํ”Œ๋กœ์šฐ

1. ์ƒˆ์‹น ์ฐพ๊ธฐ ํ™”๋ฉด์—์„œ ๋’ค๋กœ์ด๋™ํ•˜๋ฉด ํ™ˆ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ( ์•„์ง ์ƒˆ์‹น์„ ์ฐพ์ง€ ์•Š์€ ์ƒํƒœ )

2. ๋งŒ์•ฝ ์ƒˆ์‹น์ฐพ๊ธฐ ์ƒํƒœ์ผ ๊ฒฝ์šฐ ์ฐพ๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ๋ฐ”๋กœ ์ƒˆ์‹น ์ฐพ๊ธฐ ํ™”๋ฉด์œผ๋กœ ์ด๋™

 

์ƒˆ์‹น์ฐพ๊ธฐ ํ™”๋ฉด์—์„œ ์ทจ๋ฏธ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์ทจ๋ฏธ ๋ณ€๊ฒฝ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด

์ทจ๋ฏธ ๋ณ€๊ฒฝํ™”๋ฉด์ด ์•„๋‹Œ ํ™ˆํ™”๋ฉด์œผ๋กœ ์ด๋™์ด ๋˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด

ํ™ˆ ํ™”๋ฉด์—์„œ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ ์‹œ์— ๋ฐ”๋กœ ์นœ๊ตฌ๋ฅผ ์ฐพ๋Š” ํ™”๋ฉด์œผ๋กœ ์ „ํ™˜๋˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

 

self.transViewController(nextType: .push, controller: FindFriendsViewController())

 

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‚ด๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ์— ํ™ˆ๊ณผ ์นœ๊ตฌ ์ฐพ๊ธฐ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ๋‘ ๊ฐœ๋งŒ ์Œ“์ด๊ฒŒ ๋˜์–ด ํ•ด๋‹น ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ƒˆ์‹น์ฐพ๊ธฐ ํ™”๋ฉด์—์„œ popViewController๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ํ™ˆ์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

 

Coordinator๋Š” ์ ์šฉํ•ด๋ณด์ง€ ์•Š์€ ์ƒํƒœ๋ผ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ–ˆ๊ณ 

์ฐพ์€ ๋ฐฉ๋ฒ•์ด

navigationController์— setViewControllers()๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

 

setViewControllers()๋Š”

ํ˜„์žฌ ๋‚ด๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ ์Šคํƒ์— ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋“ค์„ ์„ค์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•˜์—ฌ ํ•ด๋‹น ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

let backVC = InputHobbyViewController()
let pushVC = FindFriendsViewController()

if let navigationController = navigationController {
	
    //ํ™”๋ฉด์ „ํ™˜์ด ์ด๋ฃจ์–ด์ง€๊ณ 
    navigationController.pushViewController(pushVC, animated: true)
   //์Šคํƒ์„ ์„ค์ •
    navigationController.setViewControllers([self, backVC, pushVC], animated: true)
}

 

ํ™”๋ฉด์ „ํ™˜ ์ดํ›„ 

ํ˜„์žฌ ๋‚ด๋น„๊ฒŒ์ด์…˜ ์Šคํƒ์—๋Š” [ํ™ˆ, ์ทจ๋ฏธ ์ž…๋ ฅ, ์นœ๊ตฌ ์ฐพ๊ธฐ ] ์ด๋ ‡๊ฒŒ 3๊ฐœ๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ์‹น์ฐพ๊ธฐ ํ™”๋ฉด์—์„œ popViewController๋ฅผ ํ•˜๋”๋ผ๋„ ํ™ˆ์ด ์•„๋‹Œ ์ทจ๋ฏธ ์ž…๋ ฅ์œผ๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

ViewDidLoad์—์„œ ๋ฐ์ดํ„ฐ์™€ ๊ด€๋ จ๋œ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๊ณ  ์žˆ์–ด์„œ ๋‹จ์ˆœํžˆ ํ™”๋ฉด๋งŒ ์ „ํ™˜ํ•˜๋ฉด ๋˜๊ธฐ์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ, ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋กœ์ง์ด ํ•ด๋‹น ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ์—†๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ํ•ด๊ฒฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™๋„ค์š”.

 

๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์„ธ์š”. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค : )

๊ทธ๋Ÿผ ์ด๋งŒ ๐Ÿ‘‹๐Ÿป ๐Ÿ‘‹๐Ÿป ๐Ÿ‘‹๐Ÿป

 

 

๋ฐ˜์‘ํ˜•