【问题标题】:Default tab not showing the first tab as selected默认选项卡未将第一个选项卡显示为选中状态
【发布时间】:2019-04-11 09:40:08
【问题描述】:

我为我的应用使用了自定义 UITabbar 因为我的应用需要视图控制器而不是 uitabbarcontroller。在那,我通过添加和删除第二个视图控制器作为子视图来显示两个视图控制器。 直到这很好,但标签栏项目没有显示第一个标签栏项目处于突出显示状态,而是在选择第二个标签栏项目后(从这里标签栏项目显示突出显示。)突出显示如下。

所以我尝试了一个解决方案:我添加了一个布尔变量“selected”作为用户定义的运行时属性,这也失败了,因为即使在选择了第二个标签栏后,第一个标签栏项目仍然突出显示。

我可以知道在加载视图时显示默认选项卡突出显示的任何其他替代方法吗?

func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem){
        switch item.tag {
        case 1:
            if sampleTwo == nil {
                var storyboard = UIStoryboard(name: "Main", bundle: nil)
                sampleTwo = storyboard.instantiateViewController(withIdentifier: "liveeventsVC") as! LiveEventsViewController
            }
            sampleTwo?.view.removeFromSuperview()

            sampleTwo?.removeFromParentViewController()
            break
        case 2:
            if sampleTwo == nil {
                var storyboard = UIStoryboard(name: "Main", bundle: nil)
                sampleTwo = storyboard.instantiateViewController(withIdentifier: "liveeventsVC") as! LiveEventsViewController
            }
            self.view.insertSubview(sampleTwo!.view!, belowSubview: self.bidLiveTabbar)

            self.addChildViewController(sampleTwo!)
            break
        default:
            break
        }
    }

如何在自定义标签栏中加载屏幕时显示默认选项卡?

【问题讨论】:

  • 您不需要突出默认选项卡...当您显示 tabbarController ...它会自动突出显示默认选项卡栏项...可能是您没有设置任何图像或标题标签栏项目...
  • 我没有使用标签栏控制器,我使用的是自定义 UITabbar。这是从对象库中拖出来的。
  • 对不起,我没有先注意到...

标签: ios swift customization uitabbar


【解决方案1】:
IBOutlet weak var tabBar:UITabBar!//and connect this property to the UITabBar in Interface Builder


override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated)      

    if let items = tabBar!.items  {
            for item in items {
                if item.title == "My Tab Title" {
                    tabBar.selectedItem = item;
                }
            }
        }     
}

如果所有选项卡都有唯一的标题(通常是这种情况),则此方法有效。

【讨论】:

  • 应该添加到哪里?
  • 工作,但从其他屏幕返回时,它显示错误为“线程 1:致命错误:在展开可选值时意外发现 nil”
  • 如果 let items = tabBar!.items - "Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value",它会在行上显示错误错误。
  • 现在好了。谢谢。
  • 听起来不错...也将此答案标记为赞成...谢谢
猜你喜欢
  • 1970-01-01
  • 2013-02-28
  • 2021-03-21
  • 1970-01-01
  • 2015-03-06
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 2018-08-04
相关资源
最近更新 更多