I have the following TabBarController with 2 items. It is showing correctly.
I'm calling the setupItems()
function from another controller when something
changes its value.
The function is called correctly, the problem is that the navFirstController.tabBarItem.image
is not being updated.
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
setupItems()
}
func setupItems() {
let scale: CGFloat = 0.35
let navFirstController = UINavigationController(rootViewController: FirstController())
let navSecondController = UINavigationController(rootViewController: SecondController())
navSecondController.tabBarItem.image = UIImage.scale(image: UIImage(named: "image2")!, by: scale)
navSecondController.tabBarItem.imageInsets = UIEdgeInsets(top: 8, left: 0, bottom: -8, right: 0)
if something == true {
navFirstController.tabBarItem.image = UIImage.scale(image: UIImage(named: "image1")!, by: scale)
} else {
navFirstController.tabBarItem.image = UIImage.scale(image: UIImage(named: "image3")!, by: scale)
}
navFirstController.tabBarItem.imageInsets = UIEdgeInsets(top: 8, left: 0, bottom: -8, right: 0)
viewControllers = [navSecondController, navFirstController]
}
}
I'ved tried with:
1) viewControllers?.remove(at: 1)
at the beginning of setupItems()
2) navFirstController.removeFromParent()
at the beginning of setupItems()
3) self.viewWillLayoutSubviews()
at the end of setupItems()
4) self.view.setNeedsLayout()
, self.view.setNeedsDisplay()
at the end of setupItems()