self.navigationItem.rightBarButtonItem = Кнопка не работает?
У меня есть небольшой код ниже, который создает элемент кнопки панели, который затем добавляется к панели навигации с правой стороны, как это делают многие приложения.
Проблема, с которой я столкнулся, заключается в том, что кнопка / изображение вообще не отображаются.
Как я могу это исправить?
К вашему сведению: этот код запускается как функция setup() после того, как весь другой код, запущенный в представлении, загрузился.
let image = UIImage(systemName: "paperplane")?.withTintColor(.black, renderingMode: .alwaysOriginal)
let button = UIBarButtonItem(image: image,
style: .plain,
target: self,
action: #selector(showDMController))
self.navigationItem.rightBarButtonItem = button
2 ответа
Попробуйте этот код протестировать и работает у меня.
let image = UIImage(systemName: "paperplane")?.withTintColor(.black, renderingMode: .alwaysOriginal)
let button = UIBarButtonItem(image: image,
style: .plain,
target: self,
action: #selector(showDMController))
self.navigationController?.navigationBar.topItem?.rightBarButtonItem = button
я добавил topItem
добавить rightBarButton
. Если это не решит вашу проблему, дайте мне знать.
В вашем классе UIViewController напишите этот код в методе viewDidLoad()
override func viewDidLoad() {
super.viewDidLoad()
let rightBarButton = UIButton(type: .custom)
rightBarButton.contentMode = .scaleAspectFit
rightBarButton.setImage(yourImage, for: .normal)
rightBarButton.setImage(yourImage, for: .selected)
rightBarButton.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(yourGestureRecognizer)))
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: rightBarButton)
navigationItem.rightBarButtonItem?.style = .plain
}
@objc func yourGestureRecognizer() {
print("yourGestureRecognizer called")
}