1
votes

Le bouton de la barre de navigation ne s'affiche pas dans la barre de navigation

J'ai défini rightBarButton sur navigationBar par programmation, mais cela ne s'affiche pas, même si le titre s'affiche bien.

Voici ma forme de code AppDelegate :

override func viewDidLoad()
{
    super.viewDidLoad()

    let rightBarButton = UIBarButtonItem(image: UIImage(named: "logout"), style: .plain, target: self, action: #selector(logoutButtonTapped))
    self.navigationController?.navigationItem.rightBarButtonItem = rightBarButton
}

Et voici le code de mon viewController où j'essaye d'ajouter rightBarButton .

    UINavigationBar.appearance().barTintColor        = APP_COLOR
    UINavigationBar.appearance().tintColor           = UIColor.white
    UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.font:Constants.APP_REGULAR_FONT_WITH_SIZE(size: 18), NSAttributedString.Key.foregroundColor : UIColor.white]

J'ai également essayé de supprimer les paramètres d'apparence mais le bouton n'est pas visible.

 entrez la description de l'image ici


5 commentaires

Où définissez-vous le titre (Naeem) de cet écran?


essayez d'imprimer self.navigationController voir si c'est nul


@Adeel dans viewWillAppear, je reçois des données de la base de données, puis je définis le nom comme titre de navigation


@AgentChocks. non ce n'est pas nul frère


@Adeel quand je viens sur ce contrôleur de rootViewController alors il ne s'affiche pas, mais quand je viens ici d'un autre contrôleur et non de rootViewController, alors il montre


3 Réponses :


0
votes

Vous pouvez supprimer self.navigationController ?. dans votre code.

override func viewDidLoad() {
    super.viewDidLoad()

    navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(logoutButtonTapped))
}


1 commentaires

toujours pas affiché, quand je viens sur ce contrôleur à partir de la racine viewController, cela ne s'affiche pas, quand je viens d'un autre contrôleur, cela se voit.



0
votes

N'utilisez pas self.navigationController? .navi ... au lieu de cela, utilisez self.navigationItem.rightBarButton...

override func viewDidLoad()
{
    super.viewDidLoad()

    let rightBarButton = UIBarButtonItem(image: UIImage(named: "logout"), style: .plain, target: self, action: #selector(logoutButtonTapped))
    self.navigationItem.rightBarButtonItem = rightBarButton
}

J'espère que votre problème sera résolu par ce code. Merci.


5 commentaires

toujours pas affiché, quand je viens sur ce contrôleur à partir de la racine viewController, cela ne s'affiche pas, quand je viens d'un autre contrôleur, cela se voit.


comment êtes-vous arrivé à ce contrôleur? window? .rootViewController = UINavigationController (rootViewController: ViewController ()) avez-vous utilisé ce code ou non? laissez-moi voir votre code d'appel de ce contrôleur, afin que je puisse savoir comment vous arrivez à ce contrôleur.


si vous n'avez pas utilisé cette fenêtre? .rootViewController = UINavigationController (rootViewController: ViewController ()) alors vous ne verrez pas navigationBar dans votre vue. Et si vous venez d'un certain contrôleur, vous devriez utiliser self.navigationController? .PushViewController (ViewController‌ (), animated: true) . Si vous n'avez pas ce code, vous n'obtiendrez pas navigationBar.


laissez chatHistoryVC = self.storyboard? .instantiateViewController (withIdentifier: "ChatHistoryVC") as! ChatHistoryVC self.navigationController? .SetViewControllers ([chatHistoryVC‌], animé: vrai)


laissez storyBoard: UIStoryboard = UIStoryboard (nom: "Storyboard", bundle: nil) laissez programSchedule = storyBoard.instantiateViewController (withIdentifier: "SessionFeedbackController") as! SessionFeedbackController self.navigationController? .PushViewController (programSchedul‌ e, animated: false) essayez ce code, je pense que cela devrait fonctionner pour vous.



0
votes
     let rightBarButton = UIBarButtonItem(image: UIImage(named: "test"), style: .plain, target: self, action: #selector(logoutButtonTapped))

    self.navigationController?.navigationBar.topItem?.rightBarButtonItem = rightBarButton
now this is works for me

0 commentaires