Swift

Swift - Navigator Push Present

eddie0329 2021. 12. 7. 17:30
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ๋ชฉ์ฐจ

  • ์„œ๋ก 
  • push
  • present
  • back

๐Ÿ“Œ ์„œ๋ก 

์˜ค๋Š˜์€ swift์—์„œ์˜ ํ™”๋ฉด์ „ํ™˜์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ push์™€ present๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ push

push๋Š” ํ™”๋ฉด์ด ์Œ“์ด๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ navigation์˜์—ญ์— back์ด๋ผ๋Š” ๋ฒ„ํŠผ์ด ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์Šคํ† ๋ฆฌ ๋ณด๋“œ

์ผ๋‹จ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณผ๊นŒ์š”?

๋จผ์ € button์„ ํ•˜๋‚˜ ์ƒ์„ฑํ•ด์ค€๋’ค ์˜ค๋ฅธ์ชฝ ํด๋ฆญ์œผ๋กœ ์›ํ•˜๋Š” view์˜ ์ „ํ™˜ ๋ถ€๋ถ„ ๊นŒ์ง€ ๋“œ๋ ˆ๊ทธ๋ฅผ ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ show๋ผ๋Š” ์˜์—ญ์„ ์„ ํƒ์„ ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์•„๋ž˜์˜ ํ™”๋ฉด๊ณผ ๊ฐ™์ด ์ด๋Ÿฐ ์•„์ด์ฝ˜์ด ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ

๊ทธ๋Ÿผ ์ฝ”๋“œ๋กœ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ์š”?

@IBAction func tabCodePushButton(_ sender: UIButton) {
        guard let viewController = self.storyboard?.instantiateViewController(withIdentifier: "CodePushViewController") else { return }
        self.navigationController?.pushViewController(viewController, animated: true)
    }

navigatorController์—์„œ pushViewController๋ฅผ ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ present

present๋Š” ํ™”๋ฉด์„ ๋ฎ๋Š” ํ˜•ํƒœ๋กœ ์ƒ์„ฑ์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ back ๋ฒ„ํŠผ์€ push์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ƒ์„ฑ์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์Šคํ† ๋ฆฌ๋ณด๋“œ

push์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋“œ๋ ˆ๊ทธ๋ฅผ ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ presentModally๋ฅผ ์„ ํƒํ•ด์ฃผ๋ฉด ์ด๋Ÿฐ ์•„์ด์ฝ˜์ด ์—ฐ๊ฒฐ์ด ๋ฉ๋‹ˆ๋‹ค.

์ด๋–„ Storyboard์˜ Segue์˜ Presentation์„ Full Screen ์œผ๋กœ ํ‘œ์‹œ๋ฅผ ํ•ด์ฃผ๋ฉด ํ’€ ์Šคํฌ๋ฆฐ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ

์ฝ”๋“œ๋กœ๋Š” ์ด๋ ‡๊ฒŒ ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

@IBAction func tabCodePresentButton(_ sender: UIButton) {
        guard let viewController = self.storyboard?.instantiateViewController(withIdentifier: "CodePresentViewController") else { return }
        viewController.modalPresentationStyle = .fullScreen
        self.present(viewController, animated: true, completion: nil)
    }

์ฒ˜์Œ์—๋Š” ํ’€์Šคํฌ๋ฆฐ์ด ์•„๋‹ˆ๊ฒŒ ๋ ํ…๋ฐ ์ด๊ฒƒ์€ modalPresentationStyle์„ ๋ณ€๊ฒฝ์„ ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ Back

์ž ๊ทธ๋Ÿผ ์ด์ œ ๋˜๋Œ์•„๊ฐ€๋Š” ๊ธฐ๋Šฅ์„ ์•Œ์•„์•ผ๊ฒ ์ฃ ?

push ์—์„œ์˜ back

@IBAction func tabBackButton(_ sender: UIButton) {
//        self.navigationController?.popViewController(animated: true) // ๋ฐ”๋กœ ์ „์œผ๋กœ ๋Œ์•„๊ฐ
        self.navigationController?.popToRootViewController(animated: true) // root๋กœ ๋Œ์•„๊ฐ
    }

present ์—์„œ์˜ back

 @IBAction func tabBackButton(_ sender: UIButton) {
        self.presentingViewController?.dismiss(animated: true, completion: nil)
    }
๋ฐ˜์‘ํ˜•