Я создал этот элемент кнопки правой панели, но при нажатии ничего не происходит. #selector не срабатывает, я знаю, что функция @objc работает.
let button = UIButton(type: .custom)
button.setTitle("Uncheck All", for: .normal)
button.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .semibold)
button.setTitleColor(.bandzBlue(), for: .normal)
button.layer.cornerRadius = 5
button.backgroundColor = .white
button.frame = CGRect(x: 0, y: 0, width: 92, height: 14)
button.addTarget(self, action: #selector(self.addTapped), for: .touchUpInside)
let barButton = UIBarButtonItem(customView: button)
self.navigationItem.rightBarButtonItem = barButton
@objc func addTapped() {
stuff that works fine
}
Да они в одних файлах, я тоже не знаю.
Опубликовали ответ. Если это все еще не работает, пожалуйста, поделитесь своим классом здесь





Возможно, остальная часть экземпляра не была инициализирована во время выполнения вашего кода. Вы пробовали сделать это в viewDidLoad? Если нет, попробуйте сделать это:
override func viewDidLoad() {
super.viewDidLoad()
configureYourBarButtonHere()
}
Я помню, что видел много вопросов, которые подчеркивают эту проблему с этим решением. Вот пара, которые я мог найти на данный момент:
Пытаться
button.setTitleColor(UIColor.gray, for: .normal)
Вместо
button.setTitleColor(.bandzBlue(), for: .normal)
и UIButton(type: .system)
Я написал код точно такой же, как ваш код, и протестировал его. Что плохого в работе? Это работает хорошо. Если файл, в котором вы создаете кнопку, и функция addTapped находятся в разных файлах, вам нужно настроить их по-разному.