새싹

CodeBase에서 UITabBar 적용하기

Thor_yeom 2023. 8. 27. 01:07

코드 베이스로 두가지 방법을 통해 UITabBar를 만들어봅시다.

먼저 스토리보드를 삭제하고 SceneDelegate에서 셋팅을 해줍니다.

 

1. 첫번째 방법

UITabBarController을 채택한 TabbarViewController로 넘어와서

viewDidLoad()에서 해당 TabBar에서 보여줄 VC를 만들어준다.

 

mainVC의 속성에 접근해서 TabBar를 셋팅해준다.

 

어떻게 바로 접근이 가능한건가요?

따로 설정해주는것은 없는데...

 

UIVIewCotroller에는 Extension으로 tabbarItem 프로퍼티가 있습니다. 

그렇기 때문에

tabbarItem으로 접근해서 tabbar의 속성을 사용할 수 있습니다.

 

그리고 setViewControllers() 메서드를 사용해서 배열안에 만들어놓은 인스턴스를 넣고

그럼 화면이 로드 됐을때 하단에 보여집니다.

70

 

 

2. 두번째 방법 

 

코드의 가독성을 위해 클로저를 활용해 봅니다.

클로저 안에 첫번재에서 사용했던 것을 똑같이 적어줍니다.

 

그리고 viewdidLoad()의 setViewControllers 배열에 추가해줍니다.

 

 

저는 이렇게 적용해보면서 두가지 궁금증이 생겼습니다.

 

  • 1. 클로저에서 구현하는거랑 viewDidLoad()에서 구현하는거랑 무슨 차이가 있을까?
    • 정답 : 시점의 차이!!
      코드 베이스로 구성될 경우 클래스 안에서 프로퍼티가 먼저 생성이 되고
      그 다음에 viewDidLoad()가 타는 것을 볼 수 있습니다 디버그를 찍어서 확인해보겠습니다.

 

큰 차이는 없지만  더 정확한것은 viewDidLoad()가 안에서 하는 것이 만드는것이다.

왜냐하면 viewdidLoad()가 실행될때 인스턴스가 만들어지고

함수가 종료가 되면 사라지기 때문에 더 효율적이다.

 

  • 클로저 앞에 private은 왜 붙이는 것일까?
    • 클래스 안에 프로퍼티로 만들었기 때문에
      다른 클래스에서 불려질 수도 있다. 접근 제어자를 통해 TabVC에서만 사용 될 수 있도록 제한을 둔다.

 

이상 먼저해보고 대신해보는 아무개염 이었습니다.