YALFoldingTabBarController根据选定的ViewController更改centerButtonImage

时间:2015-09-09 20:02:06

标签: ios swift uitabbarcontroller uitabbar

我正在将YALFoldingTabBar用于项目https://github.com/Yalantis/FoldingTabBar.iOS

我希望通过将当前的ViewController显示为centerButtonImage而不是加号/交叉符号来稍微改变其行为。

我试图像这样覆盖didSelectItem

   override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem!) {

    switch(self.selectedIndex)
    {
    case 0:
        self.centerButtonImage = UIImage(named: "whatever")
    default:
        //Change image
    }

    switch (self.selectedViewController)
    {
    case 0 as GameViewController:
        //Change image
    default:
        //Change image
    }
}

以下代码位于我的CustomTabBar,子类YALFoldingTabBarController

但似乎并没有这样做。我还尝试在特定UIViewControllers的{​​{1}}或viewDidLoad中操纵tabBar,但似乎只设置了tabBar。

这是可能的,如果是的话,我做错了什么?

编辑:在更改viewController时似乎没有调用该方法。

1 个答案:

答案 0 :(得分:0)

我从来没有didSelectItem工作,UITabBarControllerDelegate也没有。但是,YALFoldingTabBar具有委托方法tabBarViewWillExpandtabBarViewWillCollapse,我将这些方法与tabBarView.layoutSubviews()一起使用来解决我的问题。它不是很漂亮,但按预期工作。

func tabBarViewWillExpand(tabBarView: YALFoldingTabBar!) {

    self.centerButtonImage = UIImage(named: "plus_icon")
    //Helper method from other thread, link below
    performBlock({ () -> Void in
        tabBarView.layoutSubviews()
    }, afterDelay: 0.25)
}

How do you trigger a block after a delay, like -performSelector:withObject:afterDelay:?