单击按钮时加载Tabbarcontroller

时间:2018-08-30 10:39:46

标签: ios iphone swift uitabbarcontroller xcode8

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

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

单击“注销”后如何显示标签栏控制器,并且单击标签栏项应显示相应的视图控制器。

2 个答案:

答案 0 :(得分:1)

为每个vc提供情节提要标识符后,您必须像这样加载每个vc

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

let hm = SearchVC()

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

答案 1 :(得分:0)

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

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

您只需使用前两个选项即可从笔尖或情节提要中正确加载视图。

视图管理是here,以查看更多信息。