如何传入带委托的对象
How to pass in the object that takes delegate
这个问题的快速搜索没有给我任何结果。同时也不好解释,我想从这个方法就一切都清楚了。请看看这个:
func tap(sender: AnyObject, action: Selector) -> UITapGestureRecognizer {
let tap = UITapGestureRecognizer(target: sender, action: action)
tap.delegate = sender
return tap
}
错误:
Type 'AnyObject' does not conform to protocol 'UIGestureRecognizerDelegate'
问题是 AnyObject
需要额外写些什么来避免收到这条消息?或者其他方式?
假设 sender
始终是 UIGestureRecognizerDelegate
类型,您可以使用强制向下转换:
tap.delegate = sender as UIGestureRecognizerDelegate
否则,使用失败的转换:
if let delegate = sender as? UIGestureRecognizerDelegate
{
tap.delegate = delegate
}
作为参考,请查看 Swift 编程语言指南中包含的 Type Casting for Any and AnyObject。
请注意,对我来说,这种分配委托的方式似乎不寻常且容易出错。
这个问题的快速搜索没有给我任何结果。同时也不好解释,我想从这个方法就一切都清楚了。请看看这个:
func tap(sender: AnyObject, action: Selector) -> UITapGestureRecognizer {
let tap = UITapGestureRecognizer(target: sender, action: action)
tap.delegate = sender
return tap
}
错误:
Type 'AnyObject' does not conform to protocol 'UIGestureRecognizerDelegate'
问题是 AnyObject
需要额外写些什么来避免收到这条消息?或者其他方式?
假设 sender
始终是 UIGestureRecognizerDelegate
类型,您可以使用强制向下转换:
tap.delegate = sender as UIGestureRecognizerDelegate
否则,使用失败的转换:
if let delegate = sender as? UIGestureRecognizerDelegate
{
tap.delegate = delegate
}
作为参考,请查看 Swift 编程语言指南中包含的 Type Casting for Any and AnyObject。
请注意,对我来说,这种分配委托的方式似乎不寻常且容易出错。