我已将UITableViewController
嵌入NavigationController
中。但是,当我显示视图时,导航栏不会显示。
展示TableViewController
(其故事板ID为:SelectServicesController
):
if let selectServicesController = self.storyboard?.instantiateViewControllerWithIdentifier("SelectServicesController") as? UITableViewController {
self.navigationController?.presentViewController(selectServicesController, animated: true, completion: nil)
}
这是我构建时的样子(导航栏未显示):
答案 0 :(得分:4)
所以我只是做了这个并且在拳头上根本无法让它显示出来。然后想出来,你只需要选择导航控制器并将其设置为✅is initial View Controller
然后为了让所有内容都显示出来,我将其添加到导航控制器所呈现的视图viewDidLoad
中。这一步更具可选性。
self.navigationController?.navigationBar.barTintColor = UIColor.redColor()
self.navigationController?.navigationBar.tintColor = UIColor.blackColor()
self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.blackColor()]
navigationController?.navigationBar.hidden = false
这就是它的样子
毫米红色黑色希望能帮到你。
答案 1 :(得分:3)
您正在展示一个UITableViewController,它没有导航控制器作为父级(即使您的Storyboard首先使用它,您实际上并没有使用它)。
您可以通过执行以下操作来解决此问题:
if let selectServicesController = self.storyboard?.instantiateViewControllerWithIdentifier("SelectServicesController") as? UITableViewController {
let navigationController = UINavigationController(rootViewController: selectServicesController)
self.navigationController?.presentViewController(navigationController, animated: true, completion: nil)
}
或者将导航控制器设置为故事板的初始视图控制器,然后像这样调用它:
if let selectServicesController = self.storyboard?.instantiateInitialViewController() {
self.navigationController?.presentViewController(selectServicesController, animated: true, completion: nil)
}
答案 2 :(得分:1)
答案 3 :(得分:1)
添加这个对我有用:
self.navigationController?.isNavigationBarHidden = false
答案 4 :(得分:0)
您直接呈现表视图控制器,而不是其导航控制器。如果将导航控制器标记为初始视图控制器(勾选属性检查器中的“是初始视图控制器”框),则可以通过以下方式实例化并显示它:
if let selectServicesNavController = self.storyboard?.instantiateInitialViewController() as? UINavigationController {
// if you're pushing it onto an existing nav controller
self.navigationController?.presentViewController(selectServicesNavController, animated: true, completion: nil)
// if not (and this is probably the case), set the nav controller as your window's rootViewController
UIApplication.sharedApplication().keyWindow.rootViewController = selectServicesNavController
}
答案 5 :(得分:0)
我的猜测是Xcode忽略了这样一个事实,即在使用以下代码呈现表视图控制器时,您的表视图控制器嵌入在导航控制器中:
if let selectServicesController = self.storyboard?.instantiateViewControllerWithIdentifier("SelectServicesController") as? UITableViewController {
self.navigationController?.presentViewController(selectServicesController, animated: true, completion: nil)
}
相反,我建议您修改模拟指标下的顶栏设置以满足您的需要或改为实例化导航控制器(后者是首选和推荐的)
答案 6 :(得分:0)
在您的代码中,更改此行
self.navigationController?.presentViewController(selectServicesController, animated: true, completion: nil)
到这个
self.presentViewController(selectServicesController, animated: true, completion: nil)
答案 7 :(得分:0)
我在你的一条评论中读到了你想以模态方式呈现表视图控制器,并显示导航栏。我们可以使用Storyboard来做到这一点。从应该以模态方式显示此表视图控制器的视图控制器,Ctrl +从视图控制器拖动到表视图控制器的导航控制器。然后,选择以模态呈现。为segue设置标识符。然后,在以模态方式呈现表视图控制器的视图控制器的代码中,调用:
d /run/cntlm 700 cntlm cntlm
在不使用任何代码的情况下执行此操作的另一种方法是,模式演示是由按钮之类的东西触发的。然后,您可以从该按钮按Ctrl +拖动到导航控制器,然后选择“模态显示”。
答案 8 :(得分:0)
或者可能是这个!!
我遇到了同样的问题:导航栏显示在Storyboard的根视图中,但是在运行模拟器时 - 视图顶部没有导航栏。这解决了它:
导航控制器>导航栏> UNCHECK半透明(默认选中)。这做了两件事:
答案 9 :(得分:0)
let storyboard = UIStoryboard(name: "Expense", bundle: Bundle(for: PTCAddExpenseViewController.self))
let controller = storyboard.instantiateViewController(withIdentifier:"AddExpense") as! PTCAddExpenseViewController
let navigationController = UINavigationController(rootViewController: controller)
self.present(navigationController, animated: true, completion: nil)