Ren*_*ger 16 interface-builder ios swift
我想在IB中连接一个自定义的快速代表.委托是一个在swift中实现某个协议的对象.
protocol ThumbnailTableViewCellDelegate {
func cellWasTouched(thumbnail: Bool, cell: UITableViewCell)
}
class ThumbnailTableViewCell: UITableViewCell {
@IBOutlet var thumbnailTableViewCellDelegate: ThumbnailTableViewCellDelegate?
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,编译器抱怨:
error: 'IBOutlet' property cannot have non-object type 'ThumbnailTableViewCellDelegate'
@IBOutlet var thumbnailTableViewCellDelegate: ThumbnailTableViewCellDelegate?
^~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
Nat*_*ook 31
您必须将ThumbnailTableViewCellDelegate协议声明为@objc:
@objc protocol ThumbnailTableViewCellDelegate {
func cellWasTouched(thumbnail: Bool, cell: UITableViewCell)
}
Run Code Online (Sandbox Code Playgroud)
这是因为@IBOutlet声明变量as weak,它只适用于对象.我不确定为什么你不能只说协议符合AnyObject,也许这是一个Swift错误.
Mor*_*n J 13
您可以使用此变通方法将IB中自己的协议连接起来.这是Xcode的一个已知问题,所以有一天可能会解决.直到那时:
这适合我.
| 归档时间: |
|
| 查看次数: |
10969 次 |
| 最近记录: |