我想在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错误.