我是从Swift IOS开始的,只是有一个简单的问题。
我遵循了一系列指南,并且能够创建一个应用程序,您可以在其中使用按钮在视图之间切换。这些视图有一个导航控制器,所以你可以回去。
但是我想稍微调整一下。
相反,我希望单个视图从没有导航控制器开始。 然后,当单击我的表视图中的单元格时,我想导航到具有导航控制器的下一个视图。
我可以在界面构建器中使用segue实现这一点,但我不想通过构建器来管理它。这是因为当我对在表视图中单击的单元格进行一些检查时,我只想进入下一个视图。
所以基本上我需要以编程方式更改视图。
这是我到目前为止所做的:
然后我在表格单元格onclick函数中有以下代码:
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "presetController") as! PresetNavigationController
self.present(nextViewController, animated:true, completion:nil)
现在这段代码将我带到下一个视图,但没有加载导航控制器。
如何让导航控制器链接到此视图?它已经通过编辑器选项卡链接嵌入到它...
感谢。
照片解释故事板:
答案 0 :(得分:0)
如果您的链接导航控制器来自新控制器并且您正在打开presntview控制器而不是您将作为此
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "presetController") as! PresetNavigationController
let navController = UINavigationController(rootViewController: nextViewController)
self.present(navController, animated:true, completion: nil)
答案 1 :(得分:0)
您需要将View Controller与导航控制器交换,然后执行以下代码:
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "presetController") as! PresetNavigationController
self.present(nextViewController, animated:true, completion:nil)
这将使您的导航栏返回按钮
答案 2 :(得分:0)
使用ppinho的建议我把导航控制器作为切入点。
由于我不想在第一个视图上使用导航控制器,因此我使用以下代码隐藏它:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Hide the navigation bar on the this view controller
self.navigationController?.setNavigationBarHidden(true, animated: animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// Show the navigation bar on other view controllers
self.navigationController?.setNavigationBarHidden(false, animated: animated)
}
然后我将新视图添加到导航中,如下所示:
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "presetController") as! PresetViewController
self.navigationController?.pushViewController(nextViewController, animated: true)
答案 3 :(得分:0)
在这里
let nextScreen = storyboard?.instantiateViewController(withIdentifier: "nextScreenIdentifier") as! NextScreenControllerName
self.navigationController?.pushViewController(nextScreen, animated: true)
将其写在viewcontroller的任何函数中。