【问题标题】:Can't change tab inside tabBar(tabBar: didSelectItem item:)无法更改 tabBar 内的选项卡(tabBar:didSelectItem 项:)
【发布时间】:2016-07-06 18:21:36
【问题描述】:

我想在用户点击选项卡时切换选定的选项卡。假设我有两个选项卡并显示第一个选项卡,然后点击第一个选项卡(以及点击第二个选项卡)应该引导我进入第二个选项卡。我已经实现了一个自定义的 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
...以及许多其他人。

【问题讨论】:

  • 您正在尝试动态更改与标签栏项目关联的视图控制器?
  • 没有。实际上,我不确定您所说的“动态”是什么意思,但我的 FirstViewController 和 SecondViewController 始终位于与第一个和第二个栏项相关联的位置。这不会改变。
  • 我想我不明白你想要完成什么
  • 我有一个带有 2 个标签的标签栏控制器。选择“选择”第一个选项卡时,我希望通过刚刚点击第一个选项卡项来显示第二个选项卡。这就像切换 - 当第一个选项卡已经可见时,点击第一个选项卡应该关闭第一个选项卡并显示第二个选项卡。
  • 可能不是您正在寻找的答案,但我会避免这种情况,因为它不是非常标准的 iOS 行为,但它又不是我听过的最疯狂的事情。

标签: swift uitabbarcontroller


【解决方案1】:

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
    } 
}

【讨论】:

    猜你喜欢
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 2020-04-07
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    相关资源
    最近更新 更多