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.
3 Réponses :
Vous pouvez supprimer self.navigationController ?.
dans votre code.
override func viewDidLoad() { super.viewDidLoad() navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(logoutButtonTapped)) }
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.
N'utilisez pas self.navigationController? .navi ... au lieu de cela, utilisez self.navigationItem.rightBarButton... J'espère que votre problème sera résolu par ce code. Merci. override func viewDidLoad()
{
super.viewDidLoad()
let rightBarButton = UIBarButtonItem(image: UIImage(named: "logout"), style: .plain, target: self, action: #selector(logoutButtonTapped))
self.navigationItem.rightBarButtonItem = rightBarButton
}
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.
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
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