我试着整个早上想出这个。不知道为什么我的视图没有导航按钮......要在主视图中备份?
有人可以向我解释一下吗?
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)
}
}
答案 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。