ios - 协议(protocol)实现中的 IBOutlet

标签 ios swift uitableview uikit swift-protocols

我有以下协议(protocol):

protocol TextViewInputField {
   var indexPath: IndexPath? { get set }
   var textView: UITextView { get set }
   var lblPlaceHolder: UILabel { get set }
   func updatePHHiddenState()
} 

单元格 TMStyle2Cell 按如下方式实现此协议(protocol):

class TMStyle2Cell: UITableViewCell,TextViewInputField {

    @IBOutlet var lblPlaceHolder: UILabel!
    @IBOutlet var textView: UITextView!
    @IBOutlet var viewSeperator: UIView!
    var indexPath: IndexPath?

    func updatePHHiddenState() {

    }
}

为什么会出现以下错误?

TMStyle2Cell does not confirm to protocol TextVeiwInputField.

最佳答案

您协议(protocol)中的类型与您的实现不匹配。你需要:

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()
} 

最后,小问题,但是您的协议(protocol)的 set 部分可能不是必需的。

关于ios - 协议(protocol)实现中的 IBOutlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44518737/

相关文章:

ios - 监控 UITableViewCell 在屏幕上显示多长时间

ios - 如何根据另一个 var 检查数组的内容,通过 if 语句利用警报窗口?

ios - 自动续订订阅 IAP 在沙盒中到期后续订

ios - headerView 的 UITableView contentOffset 未对齐

ios - 为什么我的自定义 UITableViewCell 没有显示?

iphone - 防止显示 UITableView header

iphone - UITableViewDataSource 委托(delegate)

ios - 如何在使用Xcode自动代码签名的同时使用FaSTLane和Crashlytics进行构建?

swift - 如何在Swift中编写可测试的代码

iphone - 为什么在将 Float 转换为 CGFloat 时 Xcode 给我一个警告 "Cannot convert value of type ' CGFloat' to expected argument type 'UnsafeMutablePointer"?