Правая кнопка панели навигации отсутствует - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь создать пользовательскую кнопку для правой кнопки панели навигации. Но это всегда отсутствует. Это мой код, который был вызван с viewWillAppear::

func setNavBar() {
    self.navigationController?.setNavigationBarHidden(false, animated: false)

    let rightNavButton : UIBarButtonItem = UIBarButtonItem(image: UIImage(named: "photo_camera"), style: .plain, target: self, action: #selector(onCameraButton(sender:)))

    self.navigationController?.navigationBar.topItem?.hidesBackButton = false
    self.navigationController?.navigationBar.topItem?.rightBarButtonItem = rightNavButton

}

Показана кнопка «назад», поэтому topItem определенно не ноль. Пока не знаю почему, но правая кнопка отсутствует. Я пытался создать массив только с одним элементом, но он все равно не работал. Кто-нибудь может мне помочь с этим? Благодарю.

РЕДАКТИРОВАТЬ: Кстати, контроллер представления, который имеет этот код, вызывается из другого, который имеет довольно похожий код, и он работает отлично. Не знаю, в чем разница между этими двумя. Вот рабочий код:

func setNavBar() {
    self.navigationController?.setNavigationBarHidden(false, animated: false)

    let rightNavButtons : [UIBarButtonItem] = [
        UIBarButtonItem(image: UIImage(named: "edit"), style: .plain, target: self, action: #selector(onEditButton)),
        UIBarButtonItem(image: UIImage(named: "settings"), style: .plain, target: self, action: #selector(onSettingsButton))

    ]

    self.parent?.title = "Profile"
    self.navigationController?.navigationBar.topItem?.hidesBackButton = true
    self.navigationController?.navigationBar.topItem?.rightBarButtonItems = rightNavButtons
}

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

Попробуйте добавить элемент правой кнопки, используя следующий метод: -

func configureRightBarButton(title: String, icon: UIImage?, withColor: UIColor?, withTarget: AnyObject) {
        // create back button
        let btnRightMenu: UIButton = UIButton()
        btnRightMenu.tintColor = withColor
        if var image = icon {
            image = image.withRenderingMode(.alwaysTemplate)
            btnRightMenu.setImage(image, for: .normal)
        }
        btnRightMenu.setTitle(title, for: .normal)
        btnRightMenu.setTitleColor(withColor, for: .normal)
        btnRightMenu.sizeToFit()
        btnRightMenu.addTarget(withTarget, action: #selector (rightBarButtonClick(sender:)), for: .touchUpInside)
        let barButton = UIBarButtonItem(customView: btnRightMenu)
        self.navigationItem.rightBarButtonItem = barButton
    }
0 голосов
/ 03 ноября 2018

Я добавил следующий код в свой текущий проект, чтобы добавить кнопку правой панели.

func addRightButton(title: String) {
    let barRightButton = UIBarButtonItem(title: title, style: .plain, target: self, action: #selector(rightBarButtonTapped(sender:)))
    self.navigationItem.rightBarButtonItem = barRightButton
}

Это хорошо работает для меня во всем моем проекте. вам нужно использовать self.navigationItem.rightBarButtonItem вместо self.navigationController?.navigationBar.topItem?.setRightBarButton(rightNavButton, animated: false)

Попробуйте и дайте мне знать, если это работает. Я надеюсь, что это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...