Ios 单击按钮时加载Tabbar控制器

Ios 单击按钮时加载Tabbar控制器,ios,iphone,swift,uitabbarcontroller,xcode8,Ios,Iphone,Swift,Uitabbarcontroller,Xcode8,我正在做一个应用程序,这是一个标签栏控制器应用程序与标签栏项目(搜索,登录,更多)。成功登录用户后,使用“更多”中的“注销”按钮,选项卡栏更改为(搜索、帐户、更多)。问题是,单击注销时,应加载SearchViewController,如果再次在选项卡栏中单击登录,则相应的登录页面不会显示。它显示一个黑屏 @IBAction func btnLogOutClicked(_ sender: UIButton) { let hm = SearchVC() let tabOneBarI

我正在做一个应用程序,这是一个标签栏控制器应用程序与标签栏项目(搜索,登录,更多)。成功登录用户后,使用“更多”中的“注销”按钮,选项卡栏更改为(搜索、帐户、更多)。问题是,单击注销时,应加载
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
}

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

在给每个vc一个脚本标识符后,您必须像这样加载每个vc

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


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

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

  • 从nib文件(使用)
  • 来自故事板(用于实例化视图控制器)
  • 通过重写直接(通常以编程方式)加载它
默认的init方法,如SearchVC()将为您调用init(nibName:nil,bundle:nil)。这种情况下发生的是

要正确地从nib或故事板加载视图,只需使用前两个选项


视图管理是为了查看更多信息。

SearchVC、LoginVC和MoreVC在IB???@Honey内部-为了避免更多情况和管理更复杂的结构,请更改登录用户和注销用户窗口的
RootViewController
。@Sh_Khan SearchVC,LoginVC和MoreVC是三个独立的视图控制器,连接到Storyboard中的tabbarcontroller Wow!太神奇了。。你救了我一天!唐卡兄弟
let hm = SearchVC()