如何在 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 之上?
如何从 appdelegate xcode 11 swift 5 呈现视图控制器