61 lines
1.6 KiB
Swift
61 lines
1.6 KiB
Swift
import UIKit
|
|
|
|
protocol AnalysisBarDelegate {
|
|
func analysisBarWillOpenCoOccurrence() -> (domain: String, isFQDN: Bool)
|
|
}
|
|
|
|
class VCAnalysisBar: UIViewController, UITabBarDelegate {
|
|
|
|
@IBOutlet private var tabBar: UITabBar!
|
|
|
|
override func viewDidLoad() {
|
|
if #available(iOS 10.0, *) {
|
|
tabBar.unselectedItemTintColor = .sysLink
|
|
}
|
|
super.viewDidLoad()
|
|
}
|
|
|
|
override func willMove(toParent parent: UIViewController?) {
|
|
super.willMove(toParent: parent)
|
|
let enabled = (parent as? AnalysisBarDelegate) != nil
|
|
for item in tabBar.items! { item.isEnabled = enabled }
|
|
}
|
|
|
|
// MARK: - Tab Bar Appearance
|
|
|
|
override func viewWillAppear(_: Bool) {
|
|
resizeTableViewHeader()
|
|
}
|
|
|
|
override func traitCollectionDidChange(_: UITraitCollection?) {
|
|
resizeTableViewHeader()
|
|
}
|
|
|
|
func resizeTableViewHeader() {
|
|
guard let tableView = (parent as? UITableViewController)?.tableView,
|
|
let head = tableView.tableHeaderView else { return }
|
|
// Recalculate and apply new height. Otherwise tabBar won't compress
|
|
tabBar.sizeToFit()
|
|
head.frame.size.height = tabBar.frame.height
|
|
tableView.tableHeaderView = head
|
|
}
|
|
|
|
// MARK: - Tab Bar Delegate
|
|
|
|
func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
|
|
tabBar.selectedItem = nil
|
|
openCoOccurrence()
|
|
}
|
|
|
|
private func openCoOccurrence() {
|
|
guard let delegate = parent as? AnalysisBarDelegate,
|
|
let vc: VCCoOccurrence = storyboard?.load("IBCoOccurrence") else {
|
|
return
|
|
}
|
|
let info = delegate.analysisBarWillOpenCoOccurrence()
|
|
vc.domainName = info.domain
|
|
vc.isFQDN = info.isFQDN
|
|
present(vc, animated: true)
|
|
}
|
|
}
|