Я хочу иметь возможность добавить новый TabBarItem
после выполнения определенного условия. Итак, изначально у приложения есть два TabBarItems
, но если вы решите войти в систему как администратор, я хочу, чтобы третий TabBarItem
отображался
Я могу добавить штраф TabBarItem
в viewDidLoad
моего TabBarController
, который расширяет UITabBarController
. Но если я добавлю функцию с именем addNewTabBar
, которая вызывает точно такой же код, код будет выполнен, но представление не обновится.
class TabBarController: UITabBarController, UITabBarControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
// let sb = UIStoryboard(name: "Data", bundle: nil)
// let roomChooserVC = sb.instantiateViewController(withIdentifier: "roomchooser") as! RoomChooserController
// roomChooserVC.tabBarItem = UITabBarItem(tabBarSystemItem: .downloads, tag: 3)
// self.viewControllers?.append(roomChooserVC)
//
// ^^^^IF I ADD THE TAB IN VIEWDIDLOAD IT WORKS FINE ^^^
}
// If I call addNewTabBarItem() from another class, the methods get executed but the new tab is not shown ---
func addNewTabBarItem(){
let sb = UIStoryboard(name: "Data", bundle: nil)
let roomChooserVC = sb.instantiateViewController(withIdentifier: "roomchooser") as! RoomChooserController
roomChooserVC.tabBarItem = UITabBarItem(tabBarSystemItem: .downloads, tag: 3)
self.viewControllers?.append(roomChooserVC)
}
}
Теперь в классе, в котором я вызываю метод from (опущены некоторые не относящиеся к делу коды
let tbController = TabBarController()
override func viewDidLoad() {
super.viewDidLoad()
tbController.addNewTabBarItem()
// If I put a breakpoint in addNewTabBarItem everything's get
// executed fine
// MAYBE RELOAD VIEW OF TABBARCONTROLLER SOMEHOW?
}