Swift目标中的@objc协议

时间:2019-06-13 08:34:39

标签: swift

我尝试定制一个名为dDocCommonSearchBar的类,该类继承自UIView。它具有属性delegate:dDocCommonSearchBarProtocoldDocCommonSearchBarProtocol@objc协议。 dDocCommonSearchBar不能从代码实例化,只能从xib实例化。

class dDocCommonSearchBar:UIView {
    private lazy var paddingV:UIView = UIView()
    private lazy var textF:UITextField = UITextField()
    private lazy var imageV:UIImageView = {
        let view = UIImageView()
        view.contentMode = UIView.ContentMode.scaleAspectFill
        view.image = UIImage(named: "searchBar_search")
        return view
    }()

    weak var delegate:dDocCommonSearchBarProtocol?

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.setUp()
    }

    init() {
        super.init(frame: CGRect.zero)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.setUp()
    }

    func textFbecomeFirstResponder() {
        self.textF.becomeFirstResponder()
    }
}

@objc protocol dDocCommonSearchBarProtocol:NSObjectProtocol {
    @objc optional func dDocCommonSearchBarShouldBeginEditing(_ searchBar: dDocCommonSearchBar) -> Bool
}

在下面的类中,我得到错误:

  

使用未解决的标识符“ dDocCommonSearchBar”

在线:

let view = dDocCommonSearchBar(frame:CGRect.zero
class dDocHomeSearchVC:dDocCommonSearchBarProtocol {
    lazy var searchBar:dDocCommonSearchBar = {
        // Error on next line: Use of unresolved identifier 'dDocCommonSearchBar'
        let view = dDocCommonSearchBar(frame:CGRect.zero)
        return view
    }()

    lazy var searchBar:dDocCommonSearchBar = {
        let headerV = 
           Bundle.main.loadNibNamed("xxxxxx", owner: nil, options: nil)?[0]
        let he = headerV as! dDocCommonSearchBar
        return he
    }()
}

0 个答案:

没有答案