BTNavigationDropdownMenu

heliohelio Membre
janvier 2016 modifié dans API UIKit #1

Bonsoir,


 


J'essaye de faire fonctionner le code suivant qui permet d'avoir un menu déroulant au niveau de la barre de navigation  :


 


https://github.com/PhamBaTho/BTNavigationDropdownMenu


 


j'arrive très bien à  faire apparaitre le menu, cependant comme il est notifié dans les discussions ci-dessous,


 


https://github.com/PhamBaTho/BTNavigationDropdownMenu/issues/31


 


mon menu ne disparait pas lorsque je fais un retour arrière. on peut apercevoir que pas mal de personne ont eu ce problème.


Pourtant dans la dernière version, la personne qui a mis à  disposition ce code a rajouter des fonctions en publique pour qu'on puisse faire apparaà®tre ou disparaitre le menu dans n'importe quelle classe.


 


Dans mon cas j'ai testé ceci afin de cacher le menu lorsque la vue disparait, mais rien ne se passe :



override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(true)
let menuView = BTNavigationDropdownMenu(navigationController: self.navigationController, title: " ", items: [" ", " "])
menuView.hideMenu()

en revanche si je fais ceci, cela fonctionne le menu apparait sous la barre de navigation (cela sert a rien mais c'était pour tester) :



override func viewWillAppear(animated: Bool) {

super.viewWillAppear(animated)
let menuView = BTNavigationDropdownMenu(navigationController: self.navigationController, title: " ", items: [" ", " "])
menuView.showMenu()
}

Selon vous pourquoi au niveau de viewWillDisappear, le menuView.hideMenu() ne fonctionne pas ?


 


Merci.

Réponses

  • AliGatorAliGator Membre, Modérateur
    La nouvelle instance de menu, que tu crées avec let menuView = BTNavigationDropdownMenu(...) dans ton viewWillDisappear, disparait certainement. Mais comme elle n'a rien à  voir avec le menu que tu as créé ailleurs, ça ne change rien.

    C'est comme si tu avais un chien qui aboyait tout le temps, et pour le faire taire au lieu de mettre une muselière sur ton chien, tu achetais un nouveau chien pour y mettre ensuite une muselière dessus... le premier chien va évidemment continuer à  aboyer pour autant. Bah là  c'est pareil, t'as sans doute créé un menu quelque part dans ton appli, mais dans le viewDidDisappear ce que tu fais c'est créer un nouveau menu que tu masques ensuite immédiatement, au lieu de masquer le premier menu que tu as créé ailleurs.
  • Mais oui... 


    je déclare 



    var menuView: BTNavigationDropdownMenu!

    et après je fais :



    let menuView = BTNavigationDropdownMenu(navigationController: self.navigationController, title: " ", items: [" ", " "])

    en fait je crée un nouveau menu ! je n'ai pas fait assez attention !


     


    j'ai juste enlevé le let et ça fonctionne,


     


    Merci.


  • Je trouve ça bizarre que tu n'aies pas eu une erreur de compilation en utilisant le même identifiant de variable "menuView". Je l'associerais à  un bug compilateur. 

  • Effectivement habituellement j'ai une erreur du style "redéclaration de variable", bizarre
Connectez-vous ou Inscrivez-vous pour répondre.