Visual_Novel_iOS/crush/Crush/Src/Modules/Tab/TabBarController.swift

176 lines
5.9 KiB
Swift
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// TableViewController.swift
// Tabbar
//
// Created by lym on 2020/12/31.
//
import Alamofire
import UIKit
import Combine
class TabBarController: UITabBarController {
private var customTabBar = TabBar()
private var cancellables = Set<AnyCancellable>()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .c.cbd
configViewControllers()
setupEvent()
}
private func setupEvent() {
NotificationCenter.default.addObserver(self, selector: #selector(notiPresentSignInVc), name: AppNotificationName.presentSignInVc.notificationName, object: nil)
// NotificationCenter.default.addObserver(self, selector: #selector(unreadChanged), name: AppNotificationName.unreadCountChanged.notificationName, object: nil)
IMManager.shared.$chatTabAllUnreadCount.sink {[weak self] count in
guard let `self` = self else {
return
}
guard let chatItem = self.customTabBar.tabItems?[1] else { return }
chatItem.count = count
}.store(in: &cancellables)
}
deinit {
NotificationCenter.default.removeObserver(self)
print("TabBarController")
}
}
extension TabBarController {
public func setSelected(index: TabBarItemIndex) {
customTabBar.setSelected(selected: true, index: index)
switch index {
case .home:
selectedIndex = 0
case .friend:
selectedIndex = 1
case .discover:
selectedIndex = 2
case .me:
selectedIndex = 3
case .add:
break
}
}
}
extension TabBarController {
private func configViewControllers() {
let home = CLNavigationController(rootViewController: HomePageRootController())
let friend = CLNavigationController(rootViewController: FriendsRootHomeController())
let discover = CLNavigationController(rootViewController: DiscoverRootPageController())
let me = CLNavigationController(rootViewController: MeRootPageController())
viewControllers = [home, friend, discover, me]
let homeItem = TitleItem(title: "1",
image: UIImage(named: "tabbar_foryou")!,
selectedImage: UIImage(named: "tabbar_foryou_selected")!,
itemIndex: .home)
homeItem.count = 0
let friendItem = TitleItem(title: "2",
image: UIImage(named: "tabbar_contact")!,
selectedImage: UIImage(named: "tabbar_contact_selected")!,
itemIndex: .friend)
friendItem.count = 0
let discoverItem = TitleItem(title: "3",
image: UIImage(named: "tabbar_explore")!,
selectedImage: UIImage(named: "tabbar_explore_selected")!,
itemIndex: .discover)
let meItem = TitleItem(title: "4",
image: UIImage(named: "tabbar_me")!,
selectedImage: UIImage(named: "tabbar_me_selected")!,
itemIndex: .me)
meItem.count = 0
let addItem = TitleItem(title: "+",
image: UIImage(named: "tabbar_create_app")!,
selectedImage: UIImage(named: "tabbar_create_app")!,
itemIndex: .add)
let childItem: [TabbarItem] = [homeItem, friendItem, addItem, discoverItem, meItem]
customTabBar.tabItems = childItem
customTabBar.tabBarDelegate = self
setValue(customTabBar, forKey: "tabBar")
}
// MARK: noti
@objc private func notiPresentSignInVc() {
if UserCore.shared.isLogin() {
return
}
if let vc = UIWindow.getTopViewController(), vc.isKind(of: CLLoginMainController.self) {
dlog("⚠️已弹出登录")
} else {
let vc = CLLoginMainController()
let navc = CLNavigationController(rootViewController: vc)
navc.modalPresentationStyle = .fullScreen
AppRouter.shared.isBlockBackRootVc = true
present(navc, animated: true) {
AppRouter.shared.isBlockBackRootVc = false
}
}
}
// @objc private func unreadChanged() {
// guard let chatItem = customTabBar.tabItems?[1] else { return }
// chatItem.count = IMManager.shared.chatTabAllUnreadCount
// }
}
// MARK: - TabBarDelegate
extension TabBarController: TabBarDelegate {
func tabBar(_: TabBar, didSelectItemAt index: TabBarItemIndex) {
switch index {
case .home:
#if DEBUG
if APIConfig.environment != .appStore && APIConfig.environment != .product{
if selectedIndex == 0 {
UIWindow.getTopViewController()?.navigationController?.pushViewController(TestEntrancesController(), animated: true)
}
}
#endif
selectedIndex = 0
case .friend:
selectedIndex = 1
case .discover:
selectedIndex = 2
case .me:
selectedIndex = 3
case .add:
break
//AppRouter.goCreateEditAIRole()
}
IMManager.shared.regetAllUnreadCount()
}
func tabBar(_: TabBar, canTapEnterItem index: TabBarItemIndex) -> Bool {
switch index {
case .me, .friend:
if UserCore.shared.checkUserLoginIfNotPushUserToLogin() {
return true
} else {
return false
}
case .add:
if UserCore.shared.checkUserLoginIfNotPushUserToLogin(){
AppRouter.goCreateEditAIRole()
}
return false
default:
return true
}
}
}