Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Swift 3中的UITableViewCell引用当前的UINavigationController?_Swift_Swift3_Uinavigationcontroller - Fatal编程技术网

如何从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方法中)执行,因为这违反了视图/单元格的封装/职责:它们应该只显示一些内容并将事件发送到注册目标。他们不应该知道自己是视图控制器的一部分,也不应该执行任何转换,比如导航控制器推/弹出。这些事情是由控制器完成的