UITabBar 是否可以仅更改事件选项卡图标?
假设我有 5 个选项卡,第一个选项卡处于事件状态。我现在想让第二个图标处于事件状态,就 TabBar 而言,无需更改任何其他内容,只需更改该图标即可。
每当我尝试突出显示第二个图标时,TabBar 都会切换 Controller ,如果没有(委托(delegate)覆盖),图标也不会改变。有什么方法可以让选项卡保持事件状态,而只有图标不活动吗?
我为什么要问这个?
我有一个“更多”选项卡,我希望它成为当前事件选项卡顶部的弹出窗口(因此当前选项卡将在后台可见),但“更多”选项卡应在持续时间内突出显示弹出窗口(如果我激活“更多”选项卡,TabBar 将切换 Controller )。弹出窗口消失后,如果没有选择新选项卡,我将从后台返回到上一个选项卡。
我成功地完成了所需的行为,而没有激活“更多”。每当我触摸该图标时,TabBar 就会切换 Controller 。
最佳答案
作为解决方法,您可以通过实现:tabBarController(_:shouldSelect:)
来实现此目的方法。
这是你应该做的:
首先:在第一个 View Controller 中确保实现:
tabBarController?.delegate = self
viewDidLoad
是合适的地方。
第二:在第一个 View Controller 中实现tabBarController(_:shouldSelect:)
:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if viewController is PopupViewController {
// present your pop-up here... for example:
let alert = UIAlertController(title: "Title", message: nil, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .destructive, handler: nil))
present(alert, animated: true)
return false
}
return true
}
此时,点击 PopupViewController
的项目不会执行任何操作(甚至突出显示按钮),但无论使用哪个 View Controller ,它都会显示 alert
目前处于事件状态。
关于iOS UITabBar 使 'fake' 成为事件选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52421096/