swift - 覆盖自定义 TabBar 的属性?
问题描述
我有一个自定义标签栏类。如下所示。在 main.storyboard 中,我将标签栏的类设置为 CustomTabBar:
class CustomTabBar: UITabBar {
override var items: [UITabBarItem]? //[This line returns an error]
// items?[0].selectedImage = UIImage(named: "MyImage.png")
override func sizeThatFits(_ size: CGSize) -> CGSize {
var size = super.sizeThatFits(size)
size.height = 49.0
return size
}
}
“覆盖 var 项”行返回错误“不能用存储的属性 'items' 覆盖”。我想访问这个属性,以便我可以更改与第一个标签栏项目相关联的内容。我希望能够使用当前在该行下方注释掉的行。我怎么会收到这个错误?另外,还有其他方法可以完成我想做的事情吗?
解决方案
不能用存储的属性“项目”覆盖。
我不确定你为什么要这样做。如果您想设置项目,您可以使用方法setItems(_:animated:)
,并且当您需要获取选定项目时,您可以使用名为selectedItem
.
您还可以执行其他操作,例如:
- 追加新项目
items?.append()
- 更改具有特定索引的项目的属性
items?[0].selectedImage = UIImage(named: "MyImage.png")
因此,对于您的情况,您可以viewDidLoad
在自定义 TabBarController中更改此项目属性
override func viewDidLoad() {
super.viewDidLoad()
tabBar.items?[0].selectedImage = UIImage(named: "MyImage.png")
}
推荐阅读
- angular - tinymce 角度模板替换变量 - 如何让变量重置并在每次负载时保持动态?
- php - 如何使可编辑输入框成为必填字段?
- java - 在理解递归顺序树遍历中缺少链接
- idris - 根据(进一步)证明证明类型相等
- java - 在Android中做片段的正确方法是什么?
- symfony - 尝试将记录器绑定到 Symfony 3.4 中的自动装配控制器构造函数时出现未使用的绑定错误
- pagespeed - 为什么 Google PageSpeed Insights 不一致
- c# - 如何复制和替换具有管理员权限的所有用户配置文件的文件
- html - 使用 base64 字符串的剃刀显示图像
- c# - 重置 OnMessageReceived 后 RabbitMQ 不检索消息