推送到 tabBar 时隐藏视图 - swift
Hide view while push to tabBar - swift
我有一个如下所示的视图控制器。
此视图附加了 tabBarController。 tabBarController 有 5 个 viewController,我必须从另一个页面显示第 5 个 viewController 的 tabBar。所以我使用下面的代码表示 viewController
@IBAction func onClickUserProfile(_ sender: Any) {
let navVc = self.storyboard?.instantiateViewController(withIdentifier: "ProfileVC")as! ProfileVC
navVc.userId = Int(self.userId)
navVc.navigationItem.hidesBackButton = true
navVc.tabBarController?.tabBar.isHidden = false
self.navigationController?.pushViewController(nxtVc, animated: true)
}
但是在执行代码后,它生成的视图控制器如下图所示。
视图经过 tabBar。任何人都可以帮助我推送到 tabBar 视图。
您需要设置从 UITabBarController
中选择的 UIViewController
,这样应该可以。
self.tabBarController?.selectedViewController = self.tabBarController?.viewControllers![1]
其中 tabBarController?.viewControllers
returns 当前 ViewControllers
的数组嵌入在 UITabBarController
中。
你的代码应该是这样的。
@IBAction func onClickUserProfile(_ sender: Any) {
let vc = self.tabBarController?.viewControllers![1] as! ProfileVC // use your index
vc.userId = Int(self.userId)
self.tabBarController?.selectedViewController = vc
}
Note: Don't create an instance of the UIViewController
as .instantiateViewController(withIdentifier:)
use the already existed
ones in the array tabBarController?.viewControllers
, creating new
instance will be treated as new one and gives the problem you have up
there .
我有一个如下所示的视图控制器。
此视图附加了 tabBarController。 tabBarController 有 5 个 viewController,我必须从另一个页面显示第 5 个 viewController 的 tabBar。所以我使用下面的代码表示 viewController
@IBAction func onClickUserProfile(_ sender: Any) {
let navVc = self.storyboard?.instantiateViewController(withIdentifier: "ProfileVC")as! ProfileVC
navVc.userId = Int(self.userId)
navVc.navigationItem.hidesBackButton = true
navVc.tabBarController?.tabBar.isHidden = false
self.navigationController?.pushViewController(nxtVc, animated: true)
}
但是在执行代码后,它生成的视图控制器如下图所示。 视图经过 tabBar。任何人都可以帮助我推送到 tabBar 视图。
您需要设置从 UITabBarController
中选择的 UIViewController
,这样应该可以。
self.tabBarController?.selectedViewController = self.tabBarController?.viewControllers![1]
其中 tabBarController?.viewControllers
returns 当前 ViewControllers
的数组嵌入在 UITabBarController
中。
你的代码应该是这样的。
@IBAction func onClickUserProfile(_ sender: Any) {
let vc = self.tabBarController?.viewControllers![1] as! ProfileVC // use your index
vc.userId = Int(self.userId)
self.tabBarController?.selectedViewController = vc
}
Note: Don't create an instance of the
UIViewController
as.instantiateViewController(withIdentifier:)
use the already existed ones in the arraytabBarController?.viewControllers
, creating new instance will be treated as new one and gives the problem you have up there .