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")
}
Другие вопросы по тегам