需要在 viewcontroller 和 navigationcontroller 中设置目标方法两次 - swift - 以编程方式
Posted
技术标签:
【中文标题】需要在 viewcontroller 和 navigationcontroller 中设置目标方法两次 - swift - 以编程方式【英文标题】:need to set target method twice in viewcontroller and navigationcontroller - swift - programmatically 【发布时间】:2020-11-29 13:50:22 【问题描述】:有一个NavigationController
有一个ViewController
作为rootViewController
在这个ViewController
中,我声明一个panGestureRecogniser
,如下所示:
guard let thisNavigationController = navigationController as? ProfileNavigationController else return
let panDown = UIPanGestureRecognizer(target: thisNavigationController, action: #selector(handleGesture))
panDown!.delegate = self
collectionView.addGestureRecognizer(panDown!)
如您所见,我将此手势的 target
设置为 viewController
的 navigationController
,我之前已小心地将其向下转换为它的类型。
方法handleGesture
已在其自己的NavigationController类中正确声明并设置为public,实际上在ProfileNavigationController
类中我已设置并声明为public:
@objc public func handleGesture(_ gesture: UIPanGestureRecognizer)
但是我在ViewController
中有这个错误Cannot find 'handleGesture' in scope
,好像我也应该在viewController
中声明这个方法,即使目标设置为navigationController
。
如果我没有在ViewController
中设置方法also(即使它是空的),代码也不会运行,我不知道为什么会这样。
如果我在viewController
中将其设置为空,一切正常。我该如何解决这个问题?
【问题讨论】:
【参考方案1】:您应该使用ProfileNavigationController
的选择器,例如:
let panDown = UIPanGestureRecognizer(target: thisNavigationController, action: #selector(ProfileNavigationController.handleGesture))
【讨论】:
以上是关于需要在 viewcontroller 和 navigationcontroller 中设置目标方法两次 - swift - 以编程方式的主要内容,如果未能解决你的问题,请参考以下文章
django中navie time 和 aware time的使用和转换
《现代命令行工具指南》8. 备忘清单:让常用命令能够信手拈来 - navi