协议实现中的IBOutlet

时间:2017-06-13 10:20:34

标签: ios swift uitableview uikit swift-protocols

我有以下协议:

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确认。

2 个答案:

答案 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!
}