В функции init #selector не может найти вызывающую функцию.
Вот класс
import UIKit
protocol ExpandableHeaderViewDelegate {
func toggleSection(header: ExpandableHeaderView, section: Int)
}
class ExpandableHeaderView: UITableViewHeaderFooterView {
var delegate: ExpandableHeaderViewDelegate?
var section: Int!
@IBOutlet weak var titleLabel: UILabel!
override init(reuseIdentifier: String?){
super.init(reuseIdentifier: reuseIdentifier)
self.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(selectHeaderView(_:))))
}
@objc func selectHeaderView(gesture: UITapGestureRecognizer){
let cell = gesture.view as! ExpandableHeaderView
delegate?.toggleSection(header: self, section: cell.section)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(selectHeaderView(_:))))
}
func custonInt(title: String, section: Int, delegate: ExpandableHeaderViewDelegate){
self.titleLabel.text = title
self.section = section
self.delegate = delegate
}
override func layoutSubviews(){
super.layoutSubviews()
self.titleLabel.textColor = UIColor.white
self.contentView.backgroundColor = UIColor.darkGray
}
}
Вот ошибка:
Use of unresolved identifier 'selectHeaderView'
функция инициализации добавить распознаватель жестов не может найти selectHeaderView. Он ведет себя так, как будто не является частью класса. Что я делаю неправильно?
Измените это:
self.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(selectHeaderView(_:))))
к:
self.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(selectHeaderView(gesture:))))
В вашем классе действительно нет метода selectHeaderView(_:)
. selectHeaderView(_:)
. Однако ваш класс делает имеет метод selectHeaderView(gesture:)
. Ярлыки аргументов имеют значение в этой ситуации. _:
означает отсутствие метки внешнего аргумента.
Ты должен написать
#selector(selectHeaderView(gesture:))
Вы также можете позволить Swift определять метки аргументов
#selector(selectHeaderView)
Или просто
#selector(selectHeaderView)