此问题与:
有关
我理解这个问题可能与其他问题非常相似。但我一直无法使用一些答案来解决我的问题。
以下是我的故事板的外观:
viewController
有一个控制两个viewControllers的segmentControl。我现在想要转向DetailViewController,但它显示为模态segue,它隐藏了tabBar和navigationBar。
我已经尝试删除并重新创建了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)
我认为这将解决我的问题。
答案 0 :(得分:2)
假设你像在演示中那样实现了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)
}
}
,那么你几乎都已经完成了设置。
删除现有的Segue - 你将不会使用它。
为DetailViewController提供一个故事板ID - 例如“DetailVC”
更改代码以实例化DetailVC并将其推送到父Nav控制器
x