티스토리 뷰
오늘도 부스트코스 과제를 수행하면서 배운 꿀팁들을 하나 공유합니다. 오늘은 탭바컨트롤러 델리게이트함수의 활용을 통해 각 탭바컨트롤러의 네비게이션컨트롤러 및 뷰컨트롤러를 전환시키는 방법을 공유합니다.
TabBarController 메뉴 아이템 선택을 했을때를 반응하여 원하는대로 뷰컨트롤러 전환을 처리하는 방법입니다. 먼저 이런 처리과정이 필요한 예시를 소개하겠습니다.
위와 같이 테이블뷰가 있습니다. 위의 앱은 탭바컨트롤러로 2개의 메뉴아아템이 있습니다. 좌측아이템버튼은 NavigationController를 낀 TableView가, 우측아이템버튼은 역시 NavigationController를 낀 CollectionView가 있는 형태입니다.
특정 영화정보가 담긴 셀을 누르면 세부정보가 나옵니다. 이상태에서 우측 탭바아이템을 선택해보겠습니다.
위와 같이 컬렉션뷰가 나오겠지요. 자, 이곳에서도 셀 하나를 선택해봅니다. "신과함께-죄와벌" 을 선택해볼게요.
위와 같이 신과함께 영화 정보가 나옵니다. 자 근데 이상태에서 탭바 좌측아이템을 선택해보면?
위와같이 그대로 저스티스리그에 대한 세부정보 뷰가 띄워집니다. 무언가 탭바메뉴 두개가 따로 노는 기분이랄까요? 저는 이 경우, 즉 탭바메뉴를 클릭했을때, 메인화면뷰컨트롤러가 아닐경우 메인뷰컨트롤러로 전환시켜 보겠습니다.
이 문제를 해결하는 방법은 TabBarController의 Delegate메서드를 사용해서 탭바메뉴를 클릭 시의 반응을 처리하는 것입니다.
먼저 탭바컨트롤러의 클래스를 작성해줍니다. 또한 UITabBarControllerDelegate 프로토콜을 채택합니다. 탭바아이템을 선택했을때 반응하는 메서드를 사용하기 위해서입니다.
해당 TabBarController가 delegate를 사용하도록 viewDidLoad메서드에 self.delegate = self 를 추가했구요.
메뉴아이템을 선택했을 때 호출되는 Delegate Method,
overrided func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) 메서드를 사용합니다.
선택된 탭바메뉴아이템의 인덱스를 참고해서 보여질 뷰컨트롤러의 Imbed된 NavigationController 인스턴스를 받아옵니다. 그 뒤, 문제없이 해당 NavigationController의 인스턴스를 받아왔다면 popToRootViewController(animated:)를 사용해서 해당 NavigationController의 맨 초기 화면으로 전환시킬 수 있습니다.
이로써 탭바컨트롤러를 사용함에 있어 좌측, 우측 두개의 탭바아이템의 뷰컨트롤러가 따로 노는듯한 부분을 해소할 수 있게 되었습니다.
더디지만 조금씩 부스트코스 5번째과제 완성에 다가가고 있는데요. 사실 완성을 한 뒤에도 지저분한 부분이 많아 정리가 많이 필요할 것 같습니다. 추후에도 좋은 팁이 생기면 자주 포스팅 올리겠습니다.
그럼 이만, 즐코딩하시기 바랍니다 ^-^//
▼부스트코스 5번째 과제 진행과정 190405
'iOS 개발' 카테고리의 다른 글
Xcode 다수행의 특정열 문자열 한번에 수정하는 방법 (0) | 2019.04.08 |
---|---|
Swift 잘린 truncated TextLabel 크기 자동조절하기 (0) | 2019.04.06 |
Swift TableView 섹션헤더셀 고정, 특정헤더 뷰에서 제거하기 (0) | 2019.04.04 |
Swift JSON Data 디코딩등 데이터처리 전 주의사항 (0) | 2019.04.02 |
Swift 컬렉션뷰 화면회전시 레이아웃형태 유지하기 (1) | 2019.04.02 |
- Total
- Today
- Yesterday
- 백준swift
- swift string
- 스위프트
- publisher
- swift알고리즘
- Collection
- SwiftUI
- ios
- swift문제
- 알고리즘문제
- 자연어처리
- 프로토콜
- 부스트코스
- swift reduce
- uikit
- 알고리즘
- 김프매매
- Protocol
- 백준알고리즘
- 프로그래머스
- 개발자문서
- CoreML
- Swift 알고리즘
- 프로그래머스swift
- createML
- swift 기초
- 컬렉션
- swift언어
- swift
- swift 문자열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |