AutoCat/AutoCat/Controllers/MainSplitController.swift

65 lines
2.6 KiB
Swift

import UIKit
class MainSplitController: UISplitViewController, UISplitViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.preferredDisplayMode = .oneBesideSecondary
self.delegate = self
}
func splitViewController(_ splitViewController: UISplitViewController, showDetail vc: UIViewController, sender: Any?) -> Bool {
if self.isCollapsed {
let tabController = self.viewControllers.first as? UITabBarController
let selectedNavController = tabController?.selectedViewController
var vcToPush = vc
if let nav = vc as? UINavigationController {
vcToPush = nav.topViewController!
}
vcToPush.hidesBottomBarWhenPushed = true
selectedNavController?.show(vcToPush, sender: self)
return true
}
return false
}
func splitViewController(_ splitViewController: UISplitViewController, separateSecondaryFrom primaryViewController: UIViewController) -> UIViewController?
{
let tabController = splitViewController.viewControllers.first as? UITabBarController
let selectedNavController = tabController?.selectedViewController as? UINavigationController
// if selectedNavController?.viewControllers.count ?? 0 > 1 && selectedNavController?.viewControllers[1] is ReportController {
// if let controllers = selectedNavController?.popToRootViewController(animated: false) {
// let nav = UINavigationController()
// nav.setViewControllers(controllers, animated: true)
// return nav
// }
// }
return nil
}
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool
{
guard let detailNav = secondaryViewController as? UINavigationController,
let detail = detailNav.viewControllers.first
else
{
return false
}
if let tabController = primaryViewController as? UITabBarController {
let selectedNavController = tabController.selectedViewController as? UINavigationController
detail.hidesBottomBarWhenPushed = true
selectedNavController?.setNavigationBarHidden(false, animated: false)
selectedNavController?.pushViewController(detail, animated: false)
return true
}
return false
}
}