Project/[release] iOS - MyInventory

[iOS_MyInventory] 화면 구조 잡기

고양이의시간 2020. 3. 9. 23:23

기존 탭바는 커스텀이 어려우므로, 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()
    }

 

프로젝트 파일 구조 - 여기서 Main.storyboard, ViewController 는 사용하지 않는다

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

- 탭바, 네비게이션바 디자인 다듬기

- 카테고리 등록, 수정, 삭제