默认标签未将第一个标签显示为选中状态

时间:2019-04-11 09:40:08

标签: ios swift customization uitabbar

我为我的应用程序使用了自定义的UITabbar,因为我的应用程序需要一个Viewcontroller而不是uitabbarcontroller。在那,我通过添加和删除第二个viewcontroller作为子视图来显示viewcontroller。         直到这一切正常,但选项卡项不会在突出显示状态下显示第一个选项卡项,而是在选择第二个选项卡项之后(此选项卡项显示突出显示)。

因此,我尝试了一个解决方案:我添加了一个布尔变量“ 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
        }
    }

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

1 个答案:

答案 0 :(得分:0)

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

如果所有标签页都有唯一的标题(通常是这种情况),则可以使用此功能。