【问题标题】:Load a Tabbarcontroller when button is clicked单击按钮时加载 Tabbarcontroller
【发布时间】:2018-08-30 10:39:46
【问题描述】:

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

如何在单击注销时显示标签栏控制器并单击标签栏项目应显示相应的视图控制器。

【问题讨论】:

  • SearchVC , LoginVC 和 MoreVC 在 IB 里面 ??
  • @Honey - 为了避免更多条件和管理更复杂的结构,最好更改登录用户和注销用户窗口的rootViewControlloer
  • @Sh_Khan SearchVC 、 LoginVC 和 MoreVC 是三个独立的视图控制器,连接到故事板中的 tabbarcontroller

标签: ios iphone swift uitabbarcontroller xcode8


【解决方案1】:

在给每个 vc 一个故事板标识符之后,你必须像这样加载每个 vc

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

这个

let hm = SearchVC()

在程序创建vc时使用,它是黑屏的主要原因,因为vc在没有布局的情况下加载

【讨论】:

  • 哇!太棒了..你救了我的一天!谢谢好友
【解决方案2】:

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

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

您必须只使用前两个选项才能正确地从笔尖或情节提要加载视图。

查看管理是here查看更多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 2011-04-10
    • 2013-02-23
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多