覆盖自定义TabBar的属性?

时间:2018-12-15 18:58:51

标签: swift uitabbarcontroller xcode8 uitabbar uitabbaritem

我有一个自定义的Tab Bar类。如下所示。在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”覆盖”。我想访问此属性,以便可以更改与第一个选项卡栏项目关联的内容。我希望能够使用该行下方当前被注释掉的行。我怎么会得到这个错误?另外,还有另一种方法可以完成我想做的事情吗?

1 个答案:

答案 0 :(得分:1)

  

无法使用存储的属性“ items”覆盖。

我不确定您为什么要这样做。如果要设置项目,则可以使用方法setItems(_:animated:),当需要获取选定的项目时,可以使用名为selectedItem的属性。

您还可以执行其他操作,例如:

  • 追加新项目items?.append()
  • 更改具有特定索引items?[0].selectedImage = UIImage(named: "MyImage.png")的商品的属性

对于您的情况,您可以说在自定义TabBarController的viewDidLoad中更改此项属性

override func viewDidLoad() {
    super.viewDidLoad()
    tabBar.items?[0].selectedImage = UIImage(named: "MyImage.png")
}