Протокол @objc в Swift target - PullRequest
0 голосов
/ 13 июня 2019

Я попытался настроить класс с именем dDocCommonSearchBar, который наследуется от UIView.Он имеет свойство delegate:dDocCommonSearchBarProtocol.dDocCommonSearchBarProtocol - это протокол @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
    }()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...