-
[iOS_MyInventory] 화면 구조 잡기Project/[release] 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
- 탭바, 네비게이션바 디자인 다듬기
- 카테고리 등록, 수정, 삭제
'Project > [release] iOS - MyInventory' 카테고리의 다른 글
[iOS_MyInventory] 카테고리 수정, 아이템 리스트 화면 추가 (0) 2020.03.14 [iOS_MyInventory] 카테고리 메뉴 - 디자인 적용, 등록, 삭제 (0) 2020.03.10 [iOS_MyInventory] Figma 디자인을 프로젝트에 적용하기 (0) 2020.03.09 [iOS_MyInventory] 프로토타이핑 - 화면 확인 (0) 2020.03.08 [iOS_MyInventory] 프로토타이핑툴을 찾기위한 여정 (0) 2019.12.04