swift - 无法更改 tabBar 内的选项卡(tabBar : didSelectItem item:)

标签 swift uitabbarcontroller

我想在用户点击选项卡时切换选定的选项卡。假设我有两个选项卡并且显示第一个选项卡,那么点击第一个选项卡(以及点击第二个选项卡)应该会引导我进入第二个选项卡。我已经实现了一个自定义 UITabBarController,如下所示。

class CustomizedTabBarContorller: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self
        self.selectedIndex = 1                 // this way works
    }


    override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {

        if tabBar.items?.indexOf(item) == self.selectedIndex {
            self.selectedIndex = (selectedIndex == 0) ? 1 : 0  // doesn't work
        }
   }

}

如何根据所选和点击的选项卡更改选项卡?

我还看过:
UITabBar can't change selected index
UITabBarController Set a Default Tab
...以及许多其他人。

最佳答案

移动self.selectedIndex = self.selectedIndex == 0 ? 1 : 0 到主队列解决了这个问题。就像魅力一样。

if tabBar.items?.indexOf(item) == self.selectedIndex {
    dispatch_async(dispatch_get_main_queue(), { 
        self.selectedIndex = self.selectedIndex == 0 ? 1 : 0
    } 
}

关于swift - 无法更改 tabBar 内的选项卡(tabBar : didSelectItem item:),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38231090/

相关文章:

ios - 为什么不调用 CBPeripheralManagerDelegate 方法?

ios - 使用 UserDefaults 设置全局变量

swift - 从 UITabBar 按钮按下显示模态视图

ios - 从 UITabBarController 场景中删除标签栏项目

iphone - 应用程序中有 UITabBar 和 UINavigationController 吗?

iphone - UITabBarController 与 viewControllers 利用不同的方向?

ios - 数据库存在于模拟器中但不存在于设备构建中(将文件从 App Bundle 复制到 Swift 中的文档目录)

swift - OS X App Review Team 的空白屏幕;为其他人工作

objective-c - 使用 Storyboard - objective c 初始化 UITabBarController 中的所有 UIViewControllers 而不显示它们

ios - 在 View 之间快速传递数据