我有以下协议:
protocol TextViewInputField {
var indexPath: IndexPath? { get set }
var textView: UITextView { get set }
var lblPlaceHolder: UILabel { get set }
func updatePHHiddenState()
}
单元TMStyle2Cell
按如下方式实现此协议:
class TMStyle2Cell: UITableViewCell,TextViewInputField {
@IBOutlet var lblPlaceHolder: UILabel!
@IBOutlet var textView: UITextView!
@IBOutlet var viewSeperator: UIView!
var indexPath: IndexPath?
func updatePHHiddenState() {
}
}
为什么我收到以下错误?
TMStyle2Cell
未向协议TextVeiwInputField
确认。
答案 0 :(得分:8)
您的协议中的类型和您的实施不匹配。你需要:
protocol TextViewInputField {
var indexPath: IndexPath? { get set }
var textView: UITextView! { get set }
var lblPlaceHolder: UILabel! { get set }
func updatePHHiddenState()
}
如果你使用弱IBOutlets,你还需要包括:
protocol TextViewInputField {
var indexPath: IndexPath? { get set }
weak var textView: UITextView! { get set }
weak var lblPlaceHolder: UILabel! { get set }
func updatePHHiddenState()
}
最后,小点,但协议的set
部分可能并非必要。
答案 1 :(得分:5)
协议示例。在Swift 4.2中测试。
for /f "tokens=1,* delims=+-*/" %%a in ("a*-/+b") do (set string=%%a%%b)
>>> string=ab
以供查看。
@objc protocol ImageRepresentable {
var imageView: UIImageView! { get set }
}
根据您的情况。
class ViewA: UIView, ImageRepresentable {
@IBOutlet weak var imageView: UIImageView!
}