如何获取父导航控制器
Posted
技术标签:
【中文标题】如何获取父导航控制器【英文标题】:how to get parent navigation controller 【发布时间】:2017-06-20 13:46:41 【问题描述】:在我的AppDelegate
中,我有一个主要的NavigationController
,它是来自第三方框架的“抽屉控制器”。在那里,我有更多的控制器,在我的pageTabBarController
中,每个页面都有一个PostsViewController
,PostsViewController
包含一个表格视图。 我的目标是在用户点击表格视图中的单元格时将其导航到新控制器。
查看 AppDelegate.swift 设置:
var viewControllers = [NavigationController]()
for name in categories
let navTmp = NavigationController(rootViewController:
PostsViewController(category: name))
navTmp.navigationBar.isHidden = true
viewControllers.append(navTmp)
let pageTabBarController = AppPageTabBarController(viewControllers: viewControllers)
let toolbarController = AppToolbarController(rootViewController: pageTabBarController)
let menuMainController = MenuViewController()
let drawerController = AppNavigationDrawerController(rootViewController: toolbarController, leftViewController: menuMainController)
window = UIWindow(frame: Screen.bounds)
window!.rootViewController = drawerController
window!.makeKeyAndVisible()
我相信我需要父导航控制器来执行此操作。请耐心等待,我是 swift 新手。但同样,我的目标是在用户点击单元格时将其导航到新控制器。
编辑:回顾一下,看起来我需要将该控制器类嵌入到导航控制器中,并将一个连接到每个 PostsViewController
【问题讨论】:
【参考方案1】:看来您正在使用 CosmicMind 的材料。因此,您必须将导航视图控制器的代码放在特定 UIViewController 类中的 tableView
委托中,不是在 AppDelegate
中。
【讨论】:
是的,我正在使用材料。我试过了,但我无法让它工作——我尝试实例化一个导航控制器,在里面放一个新的视图控制器,然后推动它,但什么也没发生 :( 不需要这样做,您只需在视图控制器中处理要开始导航的导航,这里是PostsViewController
。现在关注它里面的tableView
,当用户点击tableViewCell
时,代理didSelectRowAt
被调用,在这里做你的工作:让nextVC = NewViewController() //或者在这里实例化视图控制器。 navigationController?.pushViewController(nextVC, animated: true)
你解释得不够好,让像我这样的新手马上就能理解,但我终于明白了。谢谢!以上是关于如何获取父导航控制器的主要内容,如果未能解决你的问题,请参考以下文章
导航回父视图控制器时,UIButton 在选项卡栏后面 - iOS
目标 C:如何从当前 ViewController 后面的 ViewController 获取导航控制器