我正在将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时似乎没有调用该方法。
答案 0 :(得分:0)
我从来没有didSelectItem
工作,UITabBarControllerDelegate
也没有。但是,YALFoldingTabBar具有委托方法tabBarViewWillExpand
和tabBarViewWillCollapse
,我将这些方法与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:?