|
7 | 7 |
|
8 | 8 | import UIKit
|
9 | 9 |
|
| 10 | +import EATSSUDesign |
| 11 | + |
10 | 12 | class RootTabBarViewController: UITabBarController {
|
11 | 13 | override func viewDidLoad() {
|
12 | 14 | super.viewDidLoad()
|
13 | 15 |
|
| 16 | + delegate = self |
| 17 | + |
14 | 18 | setupTabBar()
|
15 | 19 | }
|
16 | 20 |
|
17 | 21 | private func setupTabBar() {
|
18 | 22 | let homeViewController = HomeViewController()
|
19 | 23 | let searchViewController = MapsViewController()
|
20 |
| - let settingsViewController = MyPageViewController() |
| 24 | + let mypageViewController = MyPageViewController(hasAccessToken: RealmService.shared.isAccessTokenPresent()) |
21 | 25 |
|
22 |
| - // 각 뷰컨트롤러를 네비게이션 컨트롤러로 래핑 |
23 | 26 | let homeNav = UINavigationController(rootViewController: homeViewController)
|
24 |
| - let searchNav = UINavigationController(rootViewController: searchViewController) |
25 |
| - let settingsNav = UINavigationController(rootViewController: settingsViewController) |
| 27 | + let mapNav = UINavigationController(rootViewController: searchViewController) |
| 28 | + let mypageNav = UINavigationController(rootViewController: mypageViewController) |
26 | 29 |
|
27 |
| - // 탭바 아이템 설정 |
28 | 30 | homeNav.tabBarItem = UITabBarItem(title: "Home", image: UIImage(systemName: "house.fill"), tag: 0)
|
29 |
| - searchNav.tabBarItem = UITabBarItem(title: "Search", image: UIImage(systemName: "map.fill"), tag: 1) |
30 |
| - settingsNav.tabBarItem = UITabBarItem(title: "Settings", image: UIImage(systemName: "gearshape.fill"), tag: 2) |
| 31 | + mapNav.tabBarItem = UITabBarItem(title: "Search", image: UIImage(systemName: "map.fill"), tag: 1) |
| 32 | + mypageNav.tabBarItem = UITabBarItem(title: "Settings", image: UIImage(systemName: "gearshape.fill"), tag: 2) |
31 | 33 |
|
32 |
| - // 탭바 컨트롤러에 뷰컨트롤러 추가 |
33 |
| - viewControllers = [homeNav, searchNav, settingsNav] |
| 34 | + viewControllers = [homeNav, mapNav, mypageNav] |
34 | 35 |
|
35 |
| - // 탭바 스타일 설정 (선택적) |
36 |
| - tabBar.tintColor = .systemBlue |
| 36 | + tabBar.tintColor = EATSSUDesignAsset.Color.Main.primary.color |
37 | 37 | tabBar.backgroundColor = .white
|
38 | 38 | }
|
| 39 | + |
| 40 | + // FIXME: EATSSUKit으로 이관하여 재사용성 높이기 |
| 41 | + private func presentLoginAlert() { |
| 42 | + let alert = UIAlertController(title: "로그인이 필요한 서비스입니다", |
| 43 | + message: "로그인 하시겠습니까?", |
| 44 | + preferredStyle: .alert) |
| 45 | + let confirmAction = UIAlertAction(title: "확인", style: .default) { [weak self] _ in |
| 46 | + self?.navigateToLogin() |
| 47 | + } |
| 48 | + alert.addAction(confirmAction) |
| 49 | + present(alert, animated: true, completion: nil) |
| 50 | + } |
| 51 | + |
| 52 | + // FIXME: EATSSUKit으로 이관하여 재사용성 높이기 |
| 53 | + private func navigateToLogin() { |
| 54 | + let loginVC = LoginViewController() |
| 55 | + if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene, |
| 56 | + let sceneDelegate = windowScene.delegate as? SceneDelegate, |
| 57 | + let window = sceneDelegate.window |
| 58 | + { |
| 59 | + window.replaceRootViewController(loginVC) |
| 60 | + } |
| 61 | + } |
| 62 | +} |
| 63 | + |
| 64 | +// MARK: - UITabBarControllerDelegate |
| 65 | + |
| 66 | +extension RootTabBarViewController: UITabBarControllerDelegate { |
| 67 | + func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) { |
| 68 | + guard let selectedIndex = tabBarController.viewControllers?.firstIndex(of: viewController) else { return } |
| 69 | + |
| 70 | + if selectedIndex == 2 { |
| 71 | + #if DEBUG |
| 72 | + print("마이페지이 탭(tag 2)이 선택되었습니다.") |
| 73 | + #endif |
| 74 | + handleSettingsTabSelected() |
| 75 | + } |
| 76 | + } |
| 77 | + |
| 78 | + private func handleSettingsTabSelected() { |
| 79 | + if !RealmService.shared.isAccessTokenPresent() { |
| 80 | + presentLoginAlert() |
| 81 | + } else { |
| 82 | + #if DEBUG |
| 83 | + print("MyPageViewController로 이동") |
| 84 | + #endif |
| 85 | + } |
| 86 | + } |
39 | 87 | }
|
0 commit comments