λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🍎 iOS/UIKit

[iOS/Swift] Tab Bar - UITabBar, UITabBarController

by Danna 2021. 2. 14.
728x90
728x90

πŸ’‘ Tab Bar

Tab bar λŠ” μ•± ν™”λ©΄μ˜ ν•˜λ‹¨μ— μœ„μΉ˜ν•˜λ©°, μ‚¬λžŒλ“€μ΄ λ‹€λ₯Έ μ„Ήμ…˜λ“€κ°„ μ „ν™˜μ„ λΉ λ₯΄κ²Œ ν•˜λ„λ‘ ν•œλ‹€. μΌλ°˜μ μœΌλ‘œ λ‹€λ₯Έ μ’…λ₯˜μ˜ 정보듀을 보여쀄 λ•Œ, ν˜Ήμ€ 같은 정보λ₯Ό μ™„μ „νžˆ λ‹€λ₯Έ μŠ€νƒ€μΌλ‘œ 보여쀄 λ•Œ μ‚¬μš©ν•œλ‹€.

 

βœ”οΈŽ Tab Bar 와 Toolbar 의 차이점

Tab bar 와 λΉ„μŠ·ν•˜κ²Œ ν•˜λ‹¨μ— μœ„μΉ˜ν•œ toolbar 의 차이점을 μ΄ν•΄ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€. 

 

Tab bar λŠ” μ•±μ˜ μ—¬λŸ¬ μ„Ήμ…˜ 쀑 μ „ν™˜μ„ ν•˜λ„λ‘ ν•˜λŠ” 것이 λͺ©μ μ΄λ‹€. μ˜ˆλ₯Ό λ“€λ©΄, μ‹œκ³„ μ•±μ˜ μ•ŒλžŒ, μŠ€νƒ‘μ›ŒμΉ˜, 타이머 탭듀이 μžˆλ‹€.

 

Toolbar λŠ” ν˜„μž¬ λ³΄μ—¬μ§€λŠ” λ‚΄μš©κ³Ό μ—°κ΄€μžˆλŠ” μ•‘μ…˜μ„ μˆ˜ν–‰ν•˜λŠ” λ²„νŠΌλ“€μ„ ν¬ν•¨ν•œλ‹€. μ˜ˆλ₯Ό λ“€λ©΄, μ•„μ΄ν…œμ„ μƒμ„±ν•˜κ±°λ‚˜ μ‚­μ œν•˜κΈ°, λΆλ§ˆν¬μ— μΆ”κ°€ν•˜κΈ°, κ³΅μœ ν•˜κΈ° 등이 μžˆλ‹€.

 

Tab bar 와 Toolbar λ‘˜ λ‹€ ν•˜λ‹¨μ— λ‚˜νƒ€λ‚˜λ―€λ‘œ 같은 λ·°μ—μ„œ ν•¨κ»˜ λ‚˜νƒ€λ‚  수 μ—†λ‹€.

Tab Bar vs Toolbar 

 

βœ”οΈŽ UITabBarController

class UITabBarController : UIViewController

 

πŸ’‘ A container view controller that manages a multiselection interface, where the selection determines which child view controller to display.

UITabBarController λŠ” μ—¬λŸ¬ μ„Ήμ…˜μ„ κ°€μ§€λŠ” μ•±μ—μ„œ 각 μ„Ήμ…˜μ„ 선택해 ν•΄λ‹Ή 뷰둜 이동할 수 μžˆλ„λ‘ ν•œλ‹€. μœ μ €κ°€ νŠΉμ •ν•œ 탭을 λˆ„λ₯΄λ©΄, Tab bar controller λŠ” 이전 view λ₯Ό ꡐ체해 νƒ­κ³Ό μ—°κ²°λœ view controller 의 root view λ₯Ό 보여쀀닀. 

 

UITabBarController λŠ” UIViewController λ₯Ό 상속받은 ν΄λž˜μŠ€μ΄λ―€λ‘œ, view 속성을 κ°–λŠ”λ‹€. ν•΄λ‹Ή view λŠ” tab bar view 와 custom content λ₯Ό ν¬ν•¨ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆμΌ 뿐이닀.

 

μ•„λž˜ 그림을 보면, Tab bar view λŠ” μœ μ €κ°€ 선택할 수 μžˆλŠ” Tab bar λ₯Ό μ œκ³΅ν•˜λ©°, μ—¬λŸ¬κ°œμ˜ tab bar items 으둜 κ΅¬μ„±λœλ‹€. Tab bar view μ—μ„œ μ„ νƒλœ item 에 ν•΄λ‹Ήν•˜λŠ” content view ν•˜λ‚˜λ§Œ 화면에 λ³΄μ—¬μ§€κ²Œ λœλ‹€. 

 

βœ”οΈŽ UITabBar

class UITabBar : UIView

 

πŸ’‘ A control that displays one or more buttons in a tab bar for selecting between different subtasks, views, or modes in an app.

UITabBar λŠ” μ—¬λŸ¬ μ„Ήμ…˜μ„ κ°€μ§€λŠ” μ•±μ—μ„œ μ„ νƒμ„ ν•  수 μžˆλ„λ‘ λ²„νŠΌμ„ λ³΄μ—¬μ£ΌλŠ” 역할을 ν•œλ‹€. μ‚¬μš©μžμ˜ μΈν„°νŽ˜μ΄μŠ€μ— 맞게 Tab bar 의 λ°°κ²½ 이미지, 색상 λ“±μ˜ μ™Έν˜•μ„ μ»€μŠ€ν„°λ§ˆμ΄μ§• ν•  수 μžˆλ‹€. 

 

UITabBar λŠ” ν•˜λ‚˜ μ΄μƒμ˜ UITabBarItem object 듀을 보여쀀닀. 각 μ•„μ΄ν…œμ˜ λ‚΄μš©μ€ UITabBarItem object 에 μ €μž₯λ˜μ–΄ 있으며, 각 μ•„μ΄ν…œμ€ title, image λ₯Ό 가지고 μžˆλ‹€. 

 

Tab bar λŠ” 일반적으둜 UITabBarController 와 ν•¨κ»˜ μ‚¬μš©λ˜μ§€λ§Œ, λ…λ¦½μ μœΌλ‘œ μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€. UITabBarController object κ°€ μžˆλŠ” 경우 μ•„λž˜ λ³Έ μŠ€ν† λ¦¬λ³΄λ“œ μ˜ˆμ œμ™€ κ°™λ‹€. λ…λ¦½μ μœΌλ‘œ μ‚¬μš©ν•  경우 κ°œλ³„ View 에 라이브러리의 tab bar λ₯Ό μΆ”κ°€ν•˜μ—¬ 생성할 수 μžˆλ‹€. 

 

πŸ‘©‍πŸ’» Storyboard μ—μ„œ Tab Bar Controller μΆ”κ°€ν•˜κΈ°

Storyboard μ—μ„œ Tab Bar Controller λ₯Ό μΆ”κ°€ν•œ λͺ¨μŠ΅μ„ 보면 이해가 쉽닀. [Editor > Embed In > Tab Bar Controller] λ₯Ό 눌러 μŠ€ν† λ¦¬λ³΄λ“œμ— μΆ”κ°€ν•  수 μžˆλ‹€. Tab Bar Controller View λŠ” Tab Bar λ₯Ό 가지며, μ—°κ²°λœ View Controller 의 개수만큼 item 이 λ‚˜νƒ€λ‚œλ‹€.

 

Tab Bar Controller 와 View Controller 듀은 Relationship Segue 둜 μ—°κ²°λ˜μ–΄ μžˆλŠ” μƒνƒœμ΄λ‹€. Relationship segue λ₯Ό μƒμ„±ν•˜λ©΄ μžλ™μ μœΌλ‘œ tab bar 에 μƒˆλ‘œμš΄ item 이 μΆ”κ°€λ˜λ©°, Relationship segue λ₯Ό μ‚­μ œν•˜λ©΄ tab bar μ—μ„œ ν•΄λ‹Ή item 이 μ‚­μ œλœλ‹€. 

 

각 item 의 이미지, 타이틀을 λ³€κ²½ν•˜κΈ° μœ„ν•΄μ„œλŠ” ν•΄λ‹Ή View Controller ν•˜μœ„μ˜ Tab bar item μ—μ„œ λ³€κ²½ν•˜λ©΄ λœλ‹€.

UITabBarController and View controllers 

 

πŸ§‘‍πŸ’» Tab bar 의 default view λ°”κΎΈκΈ°

참고둜, 앱을 μ‹€ν–‰ν–ˆμ„ λ•Œ 처음 λ³΄μ—¬μ§€λŠ” view λŠ” Tab bar μ—μ„œ 맨 μ™Όμͺ½μ— μžˆλŠ” view 이닀. μŠ€ν† λ¦¬λ³΄λ“œμ—μ„œ λ“œλž˜κ·Έν•˜μ—¬ μ•„μ΄ν…œκ°„ μœ„μΉ˜λ₯Ό λ³€κ²½ν•  수 μžˆλ‹€. μ§„ν–‰ν•˜λŠ” ν”„λ‘œμ νŠΈμ—μ„œλŠ” Tab bar 의 κ°€μš΄λ° μ•„μ΄ν…œμ΄ main view κ°€ λ˜λ„λ‘ ꡬ상 쀑이라 μˆ˜μ •μ΄ ν•„μš”ν–ˆλ‹€. 

 

초기 μ„ νƒλœ 탭을 λ°”κΎΈκΈ° μœ„ν•΄ μ•„λž˜ λ°©λ²•μœΌλ‘œ ν•΄κ²°ν–ˆλ‹€.

 

  1. Tab Bar Controller 의 Custom Class λ₯Ό 생성함.
  2. Custom Class μ—μ„œ viewDidLoad method μ—μ„œ self.selectedIndex = 1  μ½”λ“œ μΆ”κ°€.

    * selectedIndex λŠ” UITabBarController μ—μ„œ ν˜„μž¬ μ„ νƒλœ 탭을 κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ instance property 이닀..

 

μ°Έκ³  링크 [κ³΅μ‹λ¬Έμ„œ]

 

 

 

참고 링크

 

728x90
728x90