如何通过代码修改Tab Bar Controller的选项卡图标
解决TabBarItem图标代码修改不生效的问题
- 系统图标初始化方式错误:你用的是SF Symbols自带图标,
UIImage(named:)是用来加载项目内导入的本地图片的,系统图标得用systemName:参数初始化:
self.tabBarItem.image = UIImage(systemName: "square.and.arrow.up.circle")
- 更换代码执行时机:
viewDidLoad的执行时机可能晚于Storyboard对TabBarItem的初始化,导致代码修改被覆盖。试试把代码移到viewWillAppear中:
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.tabBarItem.image = UIImage(systemName: "square.and.arrow.up.circle") }
或者在控制器的Storyboard初始化器里设置:
required init?(coder: NSCoder) { super.init(coder: coder) self.tabBarItem.image = UIImage(systemName: "square.and.arrow.up.circle") }
检查Storyboard默认配置:如果已经在Storyboard里给ProfileViewController对应的TabBarItem设置过图片,代码修改会被Storyboard的配置覆盖。先清空Storyboard里该TabBarItem的图片,再用代码设置试试。
避免通过索引获取TabBarItem:
self.tabBarController?.tabBar.items![1]这种强制解包的写法不仅容易崩溃,还可能因为索引对应错误导致无效果。直接用self.tabBarItem更稳妥,每个子控制器的这个属性就是对应自身的选项卡条目。
内容的提问来源于stack exchange,提问作者Sylar
相关产品推荐
相关产品推荐

