按下按钮时显示新的 ViewController 时如何显示 tabBarController

Posted

技术标签:

【中文标题】按下按钮时显示新的 ViewController 时如何显示 tabBarController【英文标题】:How to show tabBarController when presenting new ViewController when button is pressed 【发布时间】:2017-11-11 12:19:36 【问题描述】:

我有一个activityfeedVC。如果用户单击 tableViewCell,则会显示 activityVC。在这个 VC 中,我有一个“返回”按钮。单击此按钮时,我想返回上一个视图控制器。我能够做到这一点,但我无法显示 tabBarController。我正在使用完成处理程序,但出了点问题。希望你能帮忙。

import UIKit

class activityVC: UIViewController 

    @IBAction func backBtnWasPressed(_ sender: Any) 

        // Navigates back
        let feedVC = storyboard?.instantiateViewController(withIdentifier: "feedVC")

        func completionHandler() 
            // show the tabBarController - NOT WORKING
            feedVC?.tabBarController?.tabBar.isHidden = false
            print("tabBarController shown")
        

        present(feedVC!, animated: false, completion: completionHandler)



    



    override func viewDidLoad() 
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    




我想我应该使用 UINavigationBar 而不是我的客户导航...也许这更容易,即使我没有很多需要此功能的视图...

【问题讨论】:

当您设置值feedVC?.tabBarController?.tabBar.isHidden = false时,如果其中任何一个为nil,您是否调试过 您的故事板中还有"feedVC" tabBarController 或活动视图控制器。如果情节提要中可用,则需要链接到 TabBarController。另一种方法是关闭当前视图控制器,而不是在点击后退按钮时加载另一个视图控制器(如果它以模态方式呈现) 它没有以模态方式呈现,所以不起作用。 tabBarController 是在 CustomTabBarController 类中以编程方式创建的。你是说我应该展示 CustomTabBarController 而不是展示 UIViewController? 是的!否则 TabBarController 可能是 nil 可能是你没有看到它的原因。 【参考方案1】:

您是否将 activityVC 推送到视图控制器堆栈?如果是这样,您可以在用户点击后退按钮时简单地弹出 activityVC。

class activityVC: UIViewController 

   @IBAction func backBtnWasPressed(_ sender: Any) 
      self.navigationController?.popViewController(animated: false)
   

【讨论】:

以上是关于按下按钮时显示新的 ViewController 时如何显示 tabBarController的主要内容,如果未能解决你的问题,请参考以下文章

按下时显示新列表的新 ID

按下按钮时显示 ViewController,同时还存在 tabBar

如何使用 CSS 在每次闪烁时显示新文本

按下单元格内的图像时显示 ViewController [重复]

在 ViewController 中添加子视图数

检测按下哪个按钮来打开此视图[重复]