Deep_Dev
article thumbnail

 

μ½”λ“œλ‘œ Navigation μ˜μ—­ μˆ˜μ •μ„ λ°˜λ³΅ν•˜λ‹€κ°€ μ•Œκ²Œ 된 사싀 ..

μ›λž˜λŠ” Navigation Back λ²„νŠΌμ„ 톡해 화면을 μ „ν™˜ν–ˆλ‹€κ°€ λŒμ•„μ˜€λ©΄, ν•΄λ‹Ή λ²„νŠΌμ΄ 보이지 μ•ŠλŠ” ν˜„μƒλ•Œλ¬Έμ— μˆ˜μ •μ„ ν•˜λ €κ³  ν–ˆμ—ˆλŠ”λ°, 이λ₯Ό μˆ˜μ •ν•˜λ‹€ μš°μ—°νžˆ ν•„μš”ν–ˆλ˜ κ΅¬ν˜„μ„ ν•˜κ²Œ λ˜μ—ˆλ‹€.


Navigation Back Button

A ν™”λ©΄μ—μ„œ Navigation λ²„νŠΌμ„ 톡해 B ν™”λ©΄μœΌλ‘œ μ „ν™˜ν–ˆμ„ λ•Œ, Bν™”λ©΄μ—μ„œ λ‹€μ‹œ A ν™”λ©΄μœΌλ‘œ λŒμ•„κ°€λŠ” Navigation μ˜μ—­μ˜ Back λ²„νŠΌμ„ 컨트둀러의 타이틀은 보이지 μ•Šκ³ , ν™”μ‚΄ν‘œ λͺ¨μ–‘λ§Œ 보이게 ν•˜κ³  μ‹Άμ—ˆλ‹€.

 

일단 λ’€λ‘œκ°€λŠ”λ²„νŠΌμ΄ μ‚¬λΌμ§€λŠ” ν˜„μƒμ˜ 원인

λ„€λΉ„κ²Œμ΄μ…˜ λ°”μ˜ μŠ€νƒ€μΌκ³Ό λ²„νŠΌ 속성이 μ •ν™•ν•˜κ²Œ μ„€μ •λ˜μ–΄μžˆλŠ”μ§€ 확인해야 ν–ˆλ‹€. κ·Έλž˜μ„œ λ‹€μŒκ³Ό 같은 μ½”λ“œλ₯Ό μ‚¬μš©ν•΄μ„œ λ„€λΉ„κ²Œμ΄μ…˜ λ°”μ˜ μŠ€νƒ€μΌκ³Ό λ²„νŠΌ 속성을 μ„€μ •ν•  수 μžˆλ‹€.

 

        // μ΄μ „μœΌλ‘œ λŒμ•„κ°€λŠ” λ²„νŠΌ μ„€μ •
        let backButton = UIBarButtonItem()
        backButton.title = ""
        backButton.tintColor = UIColor.white
        navigationItem.backBarButtonItem = backButton

 

이λ₯Ό μ½”λ“œμ— μΆ”κ°€μ‹œν‚€λ‹ˆκΉŒ, Back λ²„νŠΌμ΄ 사라지지 μ•Šμ•˜λ‹€.

 

ν•΄κ²°μ±…

근데 λ‚΄κ°€ 이해λ₯Ό ν•˜μ§€ λͺ»ν–ˆλ˜ 것이.. μ € μ½”λ“œλ₯Ό B 컨트둀러 파일이 μ•„λ‹Œ A 컨트둀러 νŒŒμΌμ— μž‘μ„±ν•΄μ•Όν–ˆλ‹€.

-> λ„€λΉ„κ²Œμ΄μ…˜ 컨트둀러λ₯Ό 톡해 λ‹€μŒ ν™”λ©΄μœΌλ‘œ 이동 ν•œ ν›„ μ΄μ „ν™”λ©΄μœΌλ‘œ λŒμ•„κ°ˆ λ•Œ, λŒμ•„κ°€κΈ° λ²„νŠΌμ˜ 외관을 μ»€μŠ€ν„°λ§ˆμ΄μ¦ˆν•˜λ €λ©΄, 이전화면(A)μ—μ„œ μ„€μ •ν•΄μ•Ό ν•œλ‹€. μ΄λŠ” navigationItem.backBarButtonItem 속성을 μ‚¬μš©ν•˜μ—¬ 이전화면(A)μ—μ„œ λ²„νŠΌμ˜ λͺ¨μ–‘κ³Ό ν…μŠ€νŠΈλ₯Ό μ§€μ •ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

navigationItem.backBarbuttonItem 속성은 ν˜„μž¬ν™”λ©΄(B)의 λ„€λΉ„κ²Œμ΄μ…˜ μ•„μ΄ν…œμ— 영ν–₯을 주지 μ•Šκ³ , 이전화면(A)μ—μ„œ λ‹€μŒν™”λ©΄(B)의 λŒμ•„κ°€κΈ° λ²„νŠΌμ„ μ»€μŠ€ν„°λ§ˆμ΄μ¦ˆν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€κ³  ν•œλ‹€. λ”°λΌμ„œ, λ‹€μŒν™”λ©΄(B)μ—μ„œ 이 μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€κ³  해도 λŒμ•„κ°€κΈ° λ²„νŠΌμ˜ 외관이 λ³€κ²½λ˜μ§€ μ•Šμ„ 것이닀.

λ”°λΌμ„œ 이전화면(A)μ—μ„œ ν•΄λ‹Ή μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λŒμ•„κ°€κΈ° λ²„νŠΌμ„ μ»€μŠ€ν„°λ§ˆμ΄μ¦ˆν•΄μ•Ό ν•œλ‹€. λ‹€μŒν™”λ©΄(B)μ—μ„œ λŒμ•„κ°€κΈ° λ²„νŠΌμ˜ 외관을 λ³€κ²½ν•˜λ €λ©΄, 이전화면(A)의 viewWillAppearλ©”μ„œλ“œλ‚˜ viewDidLoadλ©”μ„œλ“œμ—μ„œ ν•΄λ‹Ή μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄ λœλ‹€.

이전화면(A)μ—μ„œ navigationItem.backBarButtonItem을 μ»€μŠ€ν„°λ§ˆμ΄μ¦ˆν•˜λŠ” μ΄μœ λŠ”, λ„€λΉ„κ²Œμ΄μ…˜ μ»¨νŠΈλ‘€λŸ¬κ°€ ν™”λ©΄ μ „ν™˜μ„ μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. 이전화면(A)으둜 λŒμ•„κ°€κΈ° λ²„νŠΌμ€ 이전화면(A)이 ν™œμ„±ν™”λ˜κΈ° 전에 ν‘œμ‹œλ˜κΈ° λ•Œλ¬Έμ—, ν•΄λ‹Ή ν™”λ©΄μ—μ„œ λ²„νŠΌμ˜ 외관을 μ»€μŠ€ν„°λ§ˆμ΄μ¦ˆν•΄μ•Ό μ •μƒμ μœΌλ‘œ λ‚˜νƒ€λ‚  수 μžˆλ‹€.