导航栏未显示

时间:2017-09-17 10:08:56

标签: ios swift uinavigationcontroller

我试着整个早上想出这个。不知道为什么我的视图没有导航按钮......要在主视图中备份?

有人可以向我解释一下吗?

    import UIKit
    class LiveStockList: UIViewController {
        override func viewDidLoad() {
            super.viewDidLoad()
            view.backgroundColor = UIColor.white

            let barButtonItem = UIBarButtonItem(title: "back!", style: .plain, target: self, action: #selector(backToViewController))
            self.navigationItem.rightBarButtonItem = barButtonItem
        }


        func backToViewController(_ : Any) {
            let viewController = ViewController()
            let navController = UINavigationController (rootViewController: viewController)
            present(navController, animated: true, completion: nil)

        }

}

3 个答案:

答案 0 :(得分:0)

在这里有一些误导我们的事情。

您要返回的ViewController是显示当前ListStockList ViewController的那个?

如果是,请不要调用present(_:)方法,而是调用dismiss(_:completion)方法。

如果你看不到UINavigationBar,你必须检查一些事情。

如果ViewController (parent)NavigationController,只需调用push(:_ViewController)方法,您就可以看到导航栏。

如果父{1}}未嵌入ViewController,那么当您展示NavigationController时,您需要在展示LiveStockList之前将其嵌入NavigationController

这样的事情:

let liveStockList = LiveStockList()
let navController = UINavigationController(rootViewController: liveStockList)
present(navController, animated: true, completion: nil)

然后在您的LiveStockList中,您应该能够按预期看到navigationBar

否则你可能会做一些不同的事情,我们可能需要额外的信息。

答案 1 :(得分:0)

根据你的问题"不知道为什么我的视图没有导航按钮......要在主视图中备份"。

你说在主视图中备份的导航按钮丢失了,这是因为你正在展示一个新的导航控制器。

您只需要从现有的导航控制器推送视图控制器。

我有代码示例:

let vc = UIViewController() self.navigationController?.pushViewController(vc, animated: true)

如果现有的View Controller嵌入UINavigationController中,它将起作用。

但是,如果你想呈现一个控制器,那么你应该将UIBarButtonItem添加到你的导航控制器中,并且在你的UIBarButtonItem的动作上你应该" DISMISS"视图控制器,因为以前你"现在"查看控制器。

如果有任何疑问,请告诉我,谢谢。

答案 2 :(得分:-1)

我在找错了地方。在ViewController中,我有一个启动LiveStockList控制器的按钮 它只是启动控制器并完成转换。

代码:

 func meniu1ButtonPressed () {

    let liveStockList = LiveStockList()
    present(liveStockList, animated: true, completion: nil)

}

在我为该函数添加新行后,它看起来像这样:

func meniu1ButtonPressed () {

    let liveStockList = LiveStockList()
    let navController = UINavigationController(rootViewController: liveStockList)
    present(navController, animated: true, completion: nil)

}

......它现在正在运作。它向我显示后退按钮并再次加载ViewController。