如何在 Swift 中呈现 UI 视图并保留 Tab 栏

Posted

技术标签:

【中文标题】如何在 Swift 中呈现 UI 视图并保留 Tab 栏【英文标题】:How to present UI view and keep Tab bar in Swift 【发布时间】:2019-01-29 13:16:22 【问题描述】:

我无法成功呈现 UI 视图并在 Swift 中保留 Tab 栏。它确实成功呈现,但没有标签栏。似乎呈现 UIView 会删除标签栏。这是我的代码。

navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: self, action: #selector(goMessages))

这是我使用的。

class MessagesController: UITableViewController 
    let cellId = "cellId"
    
    override func viewDidLoad() 
        super.viewDidLoad()
        
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: self, action: #selector(goMessages))
        
        let image = UIImage(named: "new_message_icon")
        navigationItem.rightBarButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(handleNewMessage))
        
        checkIfUserIsLoggedIn()
        
        tableView.register(UserCell.self, forCellReuseIdentifier: cellId)
        
        //        observeMessages()
    

    @objc func goMessages() 
        let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let Messages = storyBoard.instantiateViewController(withIdentifier: "Messages") as! MainMSGController
        self.present(Messages, animated:true, completion:nil)

【问题讨论】:

最简单的方法是在另一个控制器之前使用UITabbarController 我对编码很陌生,但我目前正在使用“class MessagesController: UITableViewController ”我将如何改变这个? youtube.com/watch?v=NzoUzrAh0V8 基本上是这样的。当你想添加tableview或collectionview时,只需在tabbar和其他2个视图之间添加NavigationController 【参考方案1】:

您必须将视图控制器推送到您的 navigationViewController 中。

但是,如果您没有,您应该将 MessagesController 嵌入 UINavigationViewController 中。 (在 Main.storyboard 中,选择 MessagesController,然后从菜单 Editor -> Embed in -> Navigation Controller)

然后:

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let Messages = storyBoard.instantiateViewController(withIdentifier: "Messages") as! MainMSGController
navigationController?.pushViewController(viewController: Messages, animated: true)

要关闭它,您可以:

navigationController?.popViewController(animated: true)

【讨论】:

【参考方案2】:

您不能呈现视图控制器并保留标签。如果你想这样做,你只能推动视图控制器。还需要其他一些东西,但乍一看,它们似乎在您的代码中正确实现。

【讨论】:

以上是关于如何在 Swift 中呈现 UI 视图并保留 Tab 栏的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UI 元素保留在 UIViewController 及其呈现的 ViewController 之上?

呈现视图 swift iOS

如何从 appdelegate xcode 11 swift 5 呈现视图控制器

Swift 中的 Xcode:导航栏未显示在 UI 集合视图(模拟器)中

Swift 如何在关闭模式后在根导航中呈现视图

如何使用 Swift 在 XCode UI 自动化中选择随机表格视图单元格