单击按钮时加载 Tabbar 控制器
Load a Tabbarcontroller when button is clicked
我正在做一个应用程序,它是一个带有标签栏项目(搜索、登录、更多)的标签栏控制器应用程序。用户成功登录后,选项卡栏更改为(搜索、帐户、更多),更多中有注销按钮。问题是单击注销时它应该加载 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
let hm = storyBoard.instantiateViewController(withIdentifier: "SearchVC") as! SearchVC
这个
let hm = SearchVC()
在以编程方式创建 vc 时使用,这是黑屏的主要原因,因为 vc 在没有布局的情况下加载
有一些方法可以加载视图控制器的视图:
- 来自 nib 文件(使用 public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?))
- 来自故事板(使用 UIStoryboard 实例化视图控制器)
- 通过覆盖 loadView()
直接加载它(通常以编程方式)
SearchVC() 等默认初始化方法将为您调用 init(nibName: nil, bundle: nil)。在这种情况下发生的事情是 here.
您必须仅使用前两个选项才能从 nib 或故事板正确加载视图。
查看管理here查看更多。
我正在做一个应用程序,它是一个带有标签栏项目(搜索、登录、更多)的标签栏控制器应用程序。用户成功登录后,选项卡栏更改为(搜索、帐户、更多),更多中有注销按钮。问题是单击注销时它应该加载 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
}
单击“注销”时如何显示标签栏控制器,点击标签栏项目应显示相应的视图控制器。
在给每一个故事板标识符
之后,你必须像这样加载每个 vclet hm = storyBoard.instantiateViewController(withIdentifier: "SearchVC") as! SearchVC
这个
let hm = SearchVC()
在以编程方式创建 vc 时使用,这是黑屏的主要原因,因为 vc 在没有布局的情况下加载
有一些方法可以加载视图控制器的视图:
- 来自 nib 文件(使用 public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?))
- 来自故事板(使用 UIStoryboard 实例化视图控制器)
- 通过覆盖 loadView() 直接加载它(通常以编程方式)
SearchVC() 等默认初始化方法将为您调用 init(nibName: nil, bundle: nil)。在这种情况下发生的事情是 here.
您必须仅使用前两个选项才能从 nib 或故事板正确加载视图。
查看管理here查看更多。