如何在Swift中显示UI视图并保持选项卡栏

时间:2019-01-29 13:16:23

标签: ios swift uitabbar

我无法成功呈现UI视图并将Tab栏保持在Swift中。它确实显示成功,但是没有选项卡栏。这是我的代码。

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)

2 个答案:

答案 0 :(得分:0)

您不能显示视图控制器并保留选项卡。如果要执行此操作,则只能推视图控制器。还有其他一些事情,但乍一看似乎已经在您的代码中正确实现了。

答案 1 :(得分:0)

您必须将视图控制器推入navigationViewController内。

但是,如果您没有MessagesController,则应该将其嵌入到UINavigationViewController中。 (在Main.storyboard内部,选择MessagesController,然后从菜单“编辑器”->“嵌入”->“导航控制器”中

然后:

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)