public enum TabItems: String {
case chats
case users
case groups
case call
}
public class CometChatUI: UITabBarController {
private let conversations = UINavigationController()
private let users = UINavigationController()
private let groups = UINavigationController()
private let calls = UINavigationController()
private var conversationsWithMessage = CometChatConversationsWithMessages()
private var usersWithMessages = CometChatUsersWithMessages()
private var groupsWithMessage = CometChatGroupsWithMessages()
private var tabs: [TabItems] = [.chats, .users , .groups]
public override func viewWillAppear(_ animated: Bool) {
setupTabBar()
}
private func setupTabBar() {
var controllers = [UIViewController]()
if self.controllers == nil {
for tab in tabs {
switch tab {
case .chats:
conversations.tabBarItem.image = UIImage(systemName: "message")
conversations.tabBarItem.title = "Chats"
conversations.navigationItem.largeTitleDisplayMode = .automatic
conversations.navigationController?.navigationBar.prefersLargeTitles = true
conversations.viewControllers = [conversationsWithMessage]
controllers.append(self.conversations)
case .users:
users.tabBarItem.image = UIImage(systemName: "person.2")
users.tabBarItem.title = "Users"
users.navigationItem.largeTitleDisplayMode = .automatic
users.navigationController?.navigationBar.prefersLargeTitles = true
users.viewControllers = [usersWithMessages]
controllers.append(self.users)
case .groups:
groups.tabBarItem.image = UIImage(systemName: "person.3")
groups.tabBarItem.title = "Groups"
groups.navigationItem.largeTitleDisplayMode = .automatic
groups.navigationController?.navigationBar.prefersLargeTitles = true
groups.viewControllers = [groupsWithMessage]
controllers.append(self.groups)
}
}
} else {
controllers = self.controllers ?? []
}
self.tabBar.tintColor = CometChatTheme.palatte.primary
self.tabBar.unselectedItemTintColor = CometChatTheme.palatte.accent600
self.viewControllers = controllers
}
}