У меня есть TabBarController в моем приложении, и 2-й элемент должен иметь заголовок Login
или Profile
в зависимости от того, вошел ли пользователь в систему или нет.
in TabBarController :
import UIKit
class TabNavigationBarVC: UITabBarController, UITabBarControllerDelegate {
override func viewDidLoad() {
self.delegate = self
if UserDefaults.standard.bool(forKey: "isUserLoggedIn") {
tabBar.items?[1].title = "Prof"
tabBar.items?[1].image = UIImage(named: "user_male")
} else {
tabBar.items?[1].title = "Log"
tabBar.items?[1].image = UIImage(named: "user_male")
}
}
}
и 2-й TabBarItem связан с RouterVC :
import UIKit
class RouterViewController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
let profile = storyboard?.instantiateViewController(withIdentifier: "ComponentUserProfile") as? UserProfileViewController
let login = storyboard?.instantiateViewController(withIdentifier: "ComponentLogin") as? LoginViewController
if UserDefaults.standard.bool(forKey: "isUserLoggedIn") {
//profile?.tabBarItem.title = "prr" - no effect
//profile?.tabBarItem = UITabBarItem(title: "PROFILE", image: UIImage(named: "user_male"), tag: 0) - no effect
viewControllers = [profile] as! [UIViewController]
} else {
//login?.tabBarItem.title = "logg"- no effect
//login?.tabBarItem = UITabBarItem(title: "LOGIN", image: UIImage(named: "user_male"), tag: 0)- no effect
viewControllers = [login] as! [UIViewController]
}
}
}
все работает правильно, но только когда пользователь запускает приложение. Позже, после того как пользователь вышел из системы, я бы хотел, чтобы второй заголовок на панели вкладок изменился с Profile
на login
, или, когда пользователь успешно вошел в систему, с Login
до Profile
. Я пробовал что-то вроде закомментированных строк кода в RouterVC
, но ничего не изменилось.
И в LoginVC эта строка тоже не работает:
override func viewWillAppear(_ animated: Bool) {
self.tabBarItem.title = "loggggg"
}
Как я могу сделать это изменение динамически?
Может быть, мне следует написать расширение для TabBarController
, чтобы отслеживать, если UserDefaults.standard.bool(forKey: "isUserLoggedIn")
изменилось, и отобразить правильный заголовок tabbarItem
? ..
p.s.navigation между представлениями, вход / выход из системы работает хорошо, дело только в заголовке
p.p.s - найдите ответ, как получить доступ к заголовку из представления - добавьте self.tabBarController?.tabBar.items?[1].title = "profile"
, но все еще ищите какое-то общее решение, например, отслеживание UserDefaults
key ..