使用 Segue 返回到 TabBarController 的初始 ViewController 后,TabBar 被隐藏
TabBar is hidden after going back to the initial ViewController of a TabBarController Using Segue
我有一个带有三个 table 视图控制器的选项卡栏控制器,第二个 VC 嵌入在导航控制器中。在第二个 VC 中,我使用此行 self.tabBarController?.tabBar.isHidden = true
隐藏了 tabBar 并创建了一个条形按钮以返回到第一个视图控制器,即使用 segue 的“主页” VC模态表示。
Screenshot of my StoryBoard
我的问题是在按下后退按钮并从第二个 VC 返回主页 VC 后,即使我将 self.tabBarController?.tabBar.isHidden = false
放在主页中,tabBar 仍然隐藏 VC 的 viewWillAppear 方法和第二个 VC 的 viewWillDisappear 方法。
这是我预期的结果与我得到的结果
expected home VC
result home VC
如何让标签栏显示出来?
当您使用模态显示转场时,您正在创建一个全新的 HomeViewController 实例。新的 HomeViewController 未 linked 到层次结构中的 TabBarController。
这是您的初始视图层次结构:
TabBarController
-> HomeVC
-> CreateVC (Navigation Controller)
-> CreateQuizVC
-> SavedVC
现在点击后退按钮后,您将获得以下内容:
TabBarController
-> HomeVC
-> CreateVC (Navigation Controller)
-> CreateQuizVC
-> HomeVC(2)
-> SavedVC
您可以做的是,不要使用 segue 返回,而是在您的代码中添加一个 IBAction,以编程方式设置 TabBar 的 selectedIndex,并将 Back UIBarButtonItem link 添加到此 IBAction。
@IBAction func backButtonAction(_ backButton: UIBarButtonItem) {
// Keep in mind that the CreateQuizVC is embeded in a NavigationController.
// The NavigationController is the child of the TabBarController
navigationController?.tabBarController?.selectedIndex = 0
navigationController?.tabBarController?.tabBar.isHidden = false
}
但是,我的建议是按照 Apple 的预期使用 TabBar。在展示 CreateQuizVC 时不要隐藏它,并使用 TabBar 在选项卡之间导航。这将有助于改善用户体验,因为 iOS 上的每个人都期待 TabBar 的这种行为。
我有一个带有三个 table 视图控制器的选项卡栏控制器,第二个 VC 嵌入在导航控制器中。在第二个 VC 中,我使用此行 self.tabBarController?.tabBar.isHidden = true
隐藏了 tabBar 并创建了一个条形按钮以返回到第一个视图控制器,即使用 segue 的“主页” VC模态表示。
Screenshot of my StoryBoard
我的问题是在按下后退按钮并从第二个 VC 返回主页 VC 后,即使我将 self.tabBarController?.tabBar.isHidden = false
放在主页中,tabBar 仍然隐藏 VC 的 viewWillAppear 方法和第二个 VC 的 viewWillDisappear 方法。
这是我预期的结果与我得到的结果
expected home VC
result home VC
如何让标签栏显示出来?
当您使用模态显示转场时,您正在创建一个全新的 HomeViewController 实例。新的 HomeViewController 未 linked 到层次结构中的 TabBarController。
这是您的初始视图层次结构:
TabBarController
-> HomeVC
-> CreateVC (Navigation Controller)
-> CreateQuizVC
-> SavedVC
现在点击后退按钮后,您将获得以下内容:
TabBarController
-> HomeVC
-> CreateVC (Navigation Controller)
-> CreateQuizVC
-> HomeVC(2)
-> SavedVC
您可以做的是,不要使用 segue 返回,而是在您的代码中添加一个 IBAction,以编程方式设置 TabBar 的 selectedIndex,并将 Back UIBarButtonItem link 添加到此 IBAction。
@IBAction func backButtonAction(_ backButton: UIBarButtonItem) {
// Keep in mind that the CreateQuizVC is embeded in a NavigationController.
// The NavigationController is the child of the TabBarController
navigationController?.tabBarController?.selectedIndex = 0
navigationController?.tabBarController?.tabBar.isHidden = false
}
但是,我的建议是按照 Apple 的预期使用 TabBar。在展示 CreateQuizVC 时不要隐藏它,并使用 TabBar 在选项卡之间导航。这将有助于改善用户体验,因为 iOS 上的每个人都期待 TabBar 的这种行为。