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
的子类。
但好像不是这样。我还尝试在特定的 UIViewControllers
的 viewDidLoad
或 viewDidAppear
中操作 tabBar,但似乎只设置了 tabBar。
这可能吗?如果可能,我做错了什么?
编辑:似乎在更改 viewController 时未调用该方法。
我从来没有让 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:?
我正在为项目使用 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
的子类。
但好像不是这样。我还尝试在特定的 UIViewControllers
的 viewDidLoad
或 viewDidAppear
中操作 tabBar,但似乎只设置了 tabBar。
这可能吗?如果可能,我做错了什么?
编辑:似乎在更改 viewController 时未调用该方法。
我从来没有让 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:?