我想在IB中连线一个定制的快速代表.委托是在
swift中实现某种协议的对象.
protocol ThumbnailTableViewCellDelegate { func cellWasTouched(thumbnail: Bool,cell: UITableViewCell) } class ThumbnailTableViewCell: UITableViewCell { @IBOutlet var thumbnailTableViewCellDelegate: ThumbnailTableViewCellDelegate? }
不幸的是,编译器抱怨:
error: 'IBOutlet' property cannot have non-object type 'ThumbnailTableViewCellDelegate' @IBOutlet var thumbnailTableViewCellDelegate: ThumbnailTableViewCellDelegate? ^~~~~~~~~
解决方法
您必须将ThumbnailTableViewCellDelegate协议声明为@objc:
@objc protocol ThumbnailTableViewCellDelegate { func cellWasTouched(thumbnail: Bool,cell: UITableViewCell) }
这是因为@IBOutlet将变量声明为弱,它只适用于对象.我不知道为什么你不能只说这个协议符合AnyObject,也许这是一个Swift错误.