PageMenu pod 呈现 Modal segue 而不是 Push segue
PageMenu pod presents Modal segue instead of Push segue
This question relates to:
'Show' segue in Xcode 6 presents the viewcontroller as a modal in iOS 7
我知道这个问题可能与其他问题非常相似。但是我一直无法使用一些答案来解决我的问题。
这是我的故事板的样子:
viewController
有一个 segmentControl 控制两个 viewController。我现在想转到 DetailViewController,但它显示为隐藏 tabBar 和 navigationBar 的模态 segue。
我已经尝试删除并重新创建 segue,因为一些答案已经建议,但它没有解决任何问题。有什么人可以建议我或指导我吗?
编辑:
在测试了 pod 提供的演示后,我能够概述我正在努力解决的问题。我已经实现了几乎相同的相同方法。唯一的区别是我的方法 PageMenu
不像演示那样使用 nib 文件。
在我的 tableView 委托中,我试图将食谱数据传递给 DetailView
。这就是我的 prepareForSegue 和 didSelect 的样子:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "detail", sender: recipe)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "detail" {
let vc = segue.destination as! DetailViewController
let indexPath = tableView.indexPathForSelectedRow!
vc.recipe = RecipeManager.shared.recipes[indexPath.row]
}
}
这是演示的 didSelect:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let newVC : UIViewController = UIViewController()
newVC.view.backgroundColor = UIColor.white
newVC.title = "Favorites"
parentNavigationController!.pushViewController(newVC, animated: true)
}
将其与演示进行比较时,我很难理解在哪里实施 parentNavigationController!.pushViewController(newVC, animated: true)
,我相信这会解决我的问题。
假设您像在演示中那样实现了 parentNavigationController
,那么您几乎已经准备就绪。
删除您现有的 Segue - 您将不会使用它。
为您的 DetailViewController 提供一个故事板 ID - 例如 "DetailVC"
更改您的代码以实例化 DetailVC 并将其推送到父 Nav Controller
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let vc = self.storyboard?.instantiateViewController(withIdentifier: "DetailVC") as? DetailViewController {
vc.recipe = RecipeManager.shared.recipes[indexPath.row]
parentNavigationController!.pushViewController(vc, animated: true)
}
}
This question relates to:
'Show' segue in Xcode 6 presents the viewcontroller as a modal in iOS 7
我知道这个问题可能与其他问题非常相似。但是我一直无法使用一些答案来解决我的问题。
这是我的故事板的样子:
viewController
有一个 segmentControl 控制两个 viewController。我现在想转到 DetailViewController,但它显示为隐藏 tabBar 和 navigationBar 的模态 segue。
我已经尝试删除并重新创建 segue,因为一些答案已经建议,但它没有解决任何问题。有什么人可以建议我或指导我吗?
编辑:
在测试了 pod 提供的演示后,我能够概述我正在努力解决的问题。我已经实现了几乎相同的相同方法。唯一的区别是我的方法 PageMenu
不像演示那样使用 nib 文件。
在我的 tableView 委托中,我试图将食谱数据传递给 DetailView
。这就是我的 prepareForSegue 和 didSelect 的样子:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "detail", sender: recipe)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "detail" {
let vc = segue.destination as! DetailViewController
let indexPath = tableView.indexPathForSelectedRow!
vc.recipe = RecipeManager.shared.recipes[indexPath.row]
}
}
这是演示的 didSelect:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let newVC : UIViewController = UIViewController()
newVC.view.backgroundColor = UIColor.white
newVC.title = "Favorites"
parentNavigationController!.pushViewController(newVC, animated: true)
}
将其与演示进行比较时,我很难理解在哪里实施 parentNavigationController!.pushViewController(newVC, animated: true)
,我相信这会解决我的问题。
假设您像在演示中那样实现了 parentNavigationController
,那么您几乎已经准备就绪。
删除您现有的 Segue - 您将不会使用它。
为您的 DetailViewController 提供一个故事板 ID - 例如 "DetailVC"
更改您的代码以实例化 DetailVC 并将其推送到父 Nav Controller
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let vc = self.storyboard?.instantiateViewController(withIdentifier: "DetailVC") as? DetailViewController {
vc.recipe = RecipeManager.shared.recipes[indexPath.row]
parentNavigationController!.pushViewController(vc, animated: true)
}
}