如何从Swift 3中的UITableViewCell引用当前的UINavigationController?
当按下表视图单元格中的按钮时,我试图返回到上一个视图控制器。要做到这一点,我的理解是,我应该按照以下思路做一些事情:如何从Swift 3中的UITableViewCell引用当前的UINavigationController?,swift,swift3,uinavigationcontroller,Swift,Swift3,Uinavigationcontroller,当按下表视图单元格中的按钮时,我试图返回到上一个视图控制器。要做到这一点,我的理解是,我应该按照以下思路做一些事情: navigationController.popViewController(animated: true) 然而,我发现很难找到从这个UITableViewCell引用当前UINavigationController的方法。我尝试过以下方法: let navigationController = self.window?.rootViewController?.navigat
navigationController.popViewController(animated: true)
然而,我发现很难找到从这个UITableViewCell引用当前UINavigationController的方法。我尝试过以下方法:
let navigationController = self.window?.rootViewController?.navigationController
这总是返回零
请帮助我找到从Swift 3中的UITableViewCell引用UINavigationController的方法 您不希望自定义单元格负责返回导航堆栈。如果您在其他地方再次使用此单元格,但预期该按钮的行为会有所不同,该怎么办 相反,为单元格创建自定义委托
协议
,并将其分配给显示表格视图的视图控制器
。
从这个控制器,您将通过一个简单的
self.navigationController
获得navigationController
。它还将提高代码的可维护性、可重用性和可读性。self.navigationController
如果workUITableViewCell没有这样的变量,不幸的是,我有一个引用的viewcontroller并使用了您的代码-它可以工作!Cheers@NSDmitry,非常感谢您不应该从视图/单元格中执行类似操作,而应该仅从嵌入视图控制器(在UITableView
的某些delgate方法中)执行,因为这违反了视图/单元格的封装/职责:它们应该只显示一些内容并将事件发送到注册目标。他们不应该知道自己是视图控制器的一部分,也不应该执行任何转换,比如导航控制器推/弹出。这些事情是由控制器完成的