【发布时间】:2020-01-01 00:20:28
【问题描述】:
我有以下带有 2 个项目的 TabBarController。它显示正确。
当something 更改其值时,我正在从另一个控制器调用setupItems() 函数。
函数调用正确,问题是navFirstController.tabBarItem.image没有更新。
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]
}
}
我试过了:
1) viewControllers?.remove(at: 1) 以setupItems() 开头
2) navFirstController.removeFromParent() 以setupItems()开头
3) self.viewWillLayoutSubviews() 在setupItems() 的末尾
4) self.view.setNeedsLayout(), self.view.setNeedsDisplay() 结尾处setupItems()
【问题讨论】:
标签: ios swift uiviewcontroller uitabbarcontroller swift5