在swift5中按下特定按钮时如何使用代码呈现tabBarViewController(在情节提要中创建)?

Posted

技术标签:

【中文标题】在swift5中按下特定按钮时如何使用代码呈现tabBarViewController(在情节提要中创建)?【英文标题】:how to present a tabBarViewController(created in storyboard) using code when pressed a particular button in swift5? 【发布时间】:2021-02-04 08:45:24 【问题描述】:

我有一个名为 ViewController 的 viewController,上面有一个按钮,我想在按下按钮时显示一个 tabBarController(它已经包含两个 viewController),我希望它全屏显示我已经尝试了一个代码

     let tabbar = (self.storyboard?.instantiateViewController(identifier: "TabBar") as? UITabBarController)       
    tabbar!.modalPresentationStyle = .fullScreen
    self.present(tabbar!, animated: true)

标识符实际上是我在故事板上给 tabBar 控制器的故事板 ID, 这段代码确实有效,但是当我按下触发该代码的按钮时,它可以正常工作,但是当我在下一次构建时连接该 tabBar 控制器上存在的 viewControllers 的出口时,那些 Viewcontrollers(那些在那个 tabBbar 上的)似乎变黑了,我看不到我在情节提要上设计的任何组件而且我在控制台中收到此消息

尝试在 上呈现 (来自 ),其视图不在窗口层次结构中。 请给我一个解决方案和一些解释 here is the snapshot of my story board

【问题讨论】:

【参考方案1】:

你可以尝试从 ViewController 到 TabController 设置一个 segue

Set the segue connection

现在输入一个标识符。

Set the segue ID

在您的第一个 ViewController 中添加一个 func 并使用 segue 标识符移动到另一个视图。

func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    if segue.identifier == "yourSegueID" 
        let tabBarController = segue.destination as! UITabBarController
        tabBarController.title = "TabBarController"
    

然后添加一个按钮动作来调用这一行

@IBAction func infoMessage(_ sender: UIButton) 
    performSegue(withIdentifier: "yourSegueID", sender: nil)

This is the implementation

【讨论】:

以上是关于在swift5中按下特定按钮时如何使用代码呈现tabBarViewController(在情节提要中创建)?的主要内容,如果未能解决你的问题,请参考以下文章

更改在 UITableview 中按下的特定按钮的图像

在 iOS 中按下特定按钮时播放特定声音

当用户在swift中按下注销按钮时如何停止更新位置

如何在基本适配器中按下按钮时添加新项目

如何在 React Native 中按下按钮时更改文本值?

在 PyQt5 中按下时如何切换按钮文本