单击按钮时加载Tabbarcontroller

问题描述 投票:0回答:2

我正在做一个应用程序,它是一个标签栏控制器应用程序,带有标签栏项目(搜索,登录,更多)。成功登录用户标签栏后,在“更多”中使用“注销”按钮更改为“搜索”,“帐户”,“更多”。问题是当单击Logout时它应该加载SearchViewController,如果再次在标签栏中单击Login,则相应的Login页面不会显示。它显示黑屏。

@IBAction func btnLogOutClicked(_ sender: UIButton) 
{
    let hm = SearchVC()
    let tabOneBarItem = UITabBarItem(title: "Search", image: UIImage(named: "TabHome.png"), selectedImage: UIImage(named: "TabHome.png"))
    hm.tabBarItem = tabOneBarItem

    let lgn = LoginVC()
    let tabOneBarItem1 = UITabBarItem(title: "Login", image: UIImage(named: "tabAcc.png"), selectedImage: UIImage(named: "tabAcc.png"))
    lgn.tabBarItem = tabOneBarItem1

    let mropt = MoreVC()
    mropt.tabBarItem = UITabBarItem(tabBarSystemItem: .more, tag: 2)

    let controllers = [hm, lgn, mropt]
    self.tabBarController?.viewControllers = controllers
    self.tabBarController?.selectedIndex = 0
}

单击“注销”时如何显示选项卡栏控制器,单击选项卡栏项应显示相应的视图控制器。

ios iphone swift uitabbarcontroller xcode8
2个回答
1
投票

在为每个vc提供故事板标识符之后,您必须加载每个vc

let hm = storyBoard.instantiateViewController(withIdentifier: "SearchVC") as! SearchVC 

这个

let hm = SearchVC()

在以编程方式创建vc时使用,这是黑屏的主要原因,因为vc在没有布局的情况下加载


0
投票

有一些方法可以加载视图控制器的视图:

默认的init方法(如SearchVC())将为您调用init(nibName:nil,bundle:nil)。在这种情况下发生的是here

您必须仅使用前两个选项才能正确加载nib或storyboard中的视图。

查看管理层是here看到更多。

© www.soinside.com 2019 - 2024. All rights reserved.