swift protocol, IBOutlet property cannot have non-object type
interface-builder, ios, swift
Solution
You have to declare your `ThumbnailTableViewCellDelegate` protocol as `@objc`:
@objc protocol ThumbnailTableViewCellDelegate {
func cellWasTouched(thumbnail: Bool, cell: UITableViewCell)
}
This is because `@IBOutlet` declares the variable as `weak`, which only works with objects. I'm not sure why you can't just say the protocol conforms to `AnyObject`, perhaps that's a Swift bug.
Problem
I would like to wire up a custom swift delegate in IB. The delegate is an object that implements a certain protocol in swift. ``` protocol ThumbnailTableViewCellDelegate { func cellWasTouched(thumbnail: Bool, cell: UITableViewCell) } class ThumbnailTableViewCell: UITableViewCell { @IBOutlet var thumbnailTableViewCellDelegate: ThumbnailTableViewCellDelegate? } ``` unfortunately, the compiler complains with: ``` error: 'IBOutlet' property cannot have non-object type 'ThumbnailTableViewCellDelegate' @IBOutlet var thumbnailTableViewCellDelegate: ThumbnailTableViewCellDelegate? ^~~~~~~~~ ```