YALFoldingTabBarController 根据选择更改 centerButtonImage ViewController

YALFoldingTabBarController change centerButtonImage depending on selected ViewController

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

我想稍微改变一下它的行为,将当前的 ViewController 显示为 centerButtonImage,而不是 plus/cross 符号。

我试过像这样覆盖 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 的子类。

但好像不是这样。我还尝试在特定的 UIViewControllersviewDidLoadviewDidAppear 中操作 tabBar,但似乎只设置了 tabBar。

这可能吗?如果可能,我做错了什么?

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

我从来没有让 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:?