iOS UITabBar 使 'fake' 成为事件选项卡?

标签 ios swift

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/

相关文章:

ios - 激活 UISearchBar

ios - UIStackView sizeToFit 无法按预期工作

ios - 在 View Controller 之间共享一个全局 NSURLSession

ios - UITableView页脚高度问题

ios - 自定义字体在 WKWebView Swift 中不起作用

ios - UnsafePointer 不再适用于 swift 3

iphone - 将导航 Controller 栏按钮与嵌入容器 View 进行交互

ios - Swift - 当我尝试通过 cellForItem 访问项目时,我的项目为零

ios - 如何在函数中传递任何类或结构作为参数?

swift - xcode 6 无法使用类型为 'stringFromDate' 的参数列表调用 '(NSData)'