[iOS_MyInventory] 화면 구조 잡기
기존 탭바는 커스텀이 어려우므로, UICollectionView 를 이용하여 탭바처럼 보이도록 만들었다.
스토리보드 삭제하여, 코드로만 레이아웃을 구성 할 예정. (snapKit 라이브러리 활용)
SceneDelegate 에서 Root 가 될 뷰컨트롤러를 UINavigationController 로 감싸서 초기화면이 되도록 하였다.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(frame: windowScene.coordinateSpace.bounds)
window?.windowScene = windowScene
window?.rootViewController = UINavigationController(rootViewController: RootTabbarViewController())
window?.makeKeyAndVisible()
}
RootTabbar :
UIView 를 상속하며, UICollectionView 를 붙였다. collectionView 의 item (아이콘) 선택시, 컬렉션뷰를 리로드하여 선택한 아이콘의 상태를 변경한다.
RootViewController :
실질적으로 하위 뷰컨트롤러들을 제어한다. RootTabbar가 화면 하단에 붙여져 있다.
하위 화면들[AddItemViewController, CategoryViewController, SettingViewController, TimelineViewController] 은
self.addChild(viewController) 로 RootViewController 에 자식으로 넣어 준다.
하위 화면의 view도 RootViewController.view 에 붙여준다. 이때, 탭바의 topAnchor 가 하위view의 bottomAnchor 가 되어야 한다.
탭바버튼을 눌렀을때 화면 전환
먼저, 현재 붙여져 있는 하위뷰 컨트롤러를 RootViewController의 뷰에서 제거한다음,
보여야 할 뷰컨트롤러의 뷰를 RootViewController.view 에 붙인다.
FirstViewController.view.removeFromSuperview()
RootViewController.view.addSubview(SecondViewController.view)
NEXT STEP
- 탭바, 네비게이션바 디자인 다듬기
- 카테고리 등록, 수정, 삭제