Когда я программно добавляю кнопку в пользовательский класс UICollectionViewCell, она не активируется и не запускает функцию, которую я к ней прикрепил.
Я уже пробовал:
, но не получилось.
В моем классе ячеек у меня есть:
let toggleButton: UIButton = {
let tb = UIButton(type: .custom) as UIButton
tb.setTitleColor(.white, for: .normal)
tb.setTitle("Example", for: .normal)
tb.titleLabel?.font = UIFont.customFont(name: "InterUI-Medium", size: 18)
tb.backgroundColor = UIColor(red:0.36, green:0.69, blue:0.55, alpha:1.0)
tb.layer.cornerRadius = 5
tb.titleLabel?.adjustsFontSizeToFitWidth = true
tb.titleLabel?.minimumScaleFactor = 0.4
tb.translatesAutoresizingMaskIntoConstraints = false
tb.addTarget(self, action: #selector(topButtonTouched), for: .touchUpInside)
return tb
}()
и
func setupView() {
self.addSubview(toggleButton)
let menuAndToggleConstraints = [
toggleButton.centerYAnchor.constraint(equalTo: self.centerYAnchor),
toggleButton.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -100,
toggleButton.widthAnchor.constraint(equalToConstant: 150)
]
NSLayoutConstraint.activate(menuAndToggleConstraints)
}
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
для настройки кнопки в ячейке.Я попытался self.isUserInteractionEnabled, чтобы увидеть, есть ли какие-либо конфликты, но это ничего не решает.У меня есть еще один распознаватель жестов в ячейке, и я пробовал без него, и кнопка все еще не активна.
Редактировать: Вот мой делегат и моя функция, которая вызывает collectionView для изменения размера в indexPath:
weak var delegate: ExpandedCellDelegate?
public var indexPath: IndexPath!
@objc func topButtonTouched(_ sender: UIButton) {
print("hello")
if let delegate = self.delegate{
delegate.topButtonTouched(indexPath: indexPath)
}
}
Я удостоверился, что делегат и indexPath установлены как self в функции cellForRow в классе CollectionView, как показано в этого ответа .