Tusker/Tusker/Screens/Main/MainTabBarViewController.swift

84 lines
2.3 KiB
Swift
Raw Normal View History

2018-08-21 21:17:25 +00:00
//
// MainTabBarViewController.swift
// Tusker
//
2019-02-08 18:41:19 +00:00
// Created by Shadowfacts on 8/21/18.
2018-08-21 21:17:25 +00:00
// Copyright © 2018 Shadowfacts. All rights reserved.
//
import UIKit
2019-01-05 17:59:55 +00:00
class MainTabBarViewController: UITabBarController, UITabBarControllerDelegate {
2018-08-21 21:17:25 +00:00
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
if UIDevice.current.userInterfaceIdiom == .phone {
return .portrait
} else {
return .all
}
}
2018-08-21 21:17:25 +00:00
override func viewDidLoad() {
super.viewDidLoad()
2019-01-05 17:59:55 +00:00
self.delegate = self
viewControllers = [
2019-09-14 19:55:06 +00:00
embedInNavigationController(TimelinesPageViewController()),
embedInNavigationController(NotificationsPageViewController()),
2019-01-19 19:31:31 +00:00
ComposeViewController(),
embedInNavigationController(ExploreViewController()),
2019-01-19 19:31:31 +00:00
embedInNavigationController(MyProfileTableViewController()),
2019-01-05 17:59:55 +00:00
]
2018-08-21 21:17:25 +00:00
}
func embedInNavigationController(_ vc: UIViewController) -> UINavigationController {
if let vc = vc as? UINavigationController {
return vc
} else {
return UINavigationController(rootViewController: vc)
}
}
2018-08-31 02:30:19 +00:00
2019-01-05 17:59:55 +00:00
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if viewController is ComposeViewController {
presentCompose()
2019-01-05 17:59:55 +00:00
return false
}
return true
}
func presentCompose() {
let compose = ComposeViewController()
let navigationController = embedInNavigationController(compose)
navigationController.presentationController?.delegate = compose
present(navigationController, animated: true)
}
}
extension MainTabBarViewController {
enum Tab: Int {
case timelines
case notifications
case compose
case explore
case myProfile
}
func select(tab: Tab) {
if tab == .compose {
presentCompose()
} else {
selectedIndex = tab.rawValue
}
}
func getTabController(tab: Tab) -> UIViewController? {
if tab == .compose {
return nil
} else {
return viewControllers![tab.rawValue]
}
}
2018-08-21 21:17:25 +00:00
}