web-dev-qa-db-fra.com

Le bouton et le titre de la barre de navigation rapide ne s'affichent pas

J'aimerais créer une barre de navigation au-dessus de mon application. J'ai créé un contrôleur de navigation -> Contrôleur de barre d'onglets -> Contrôleur de navigation -> Contrôleur de table

  1. J'ai fait glisser un élément de bouton de barre sur le côté supérieur droit.
  2. J'ai double-cliqué sur le titre au milieu du contrôleur de table et écrit un texte.
  3. Je l'ai aussi essayé avec ce code dans le viewDidLoad () de mon contrôleur:

    self.navigationController.navigationBar.topItem.title = "some title"
    self.navigationItem.setRightBarButtonItem(UIBarButtonItem(barButtonSystemItem: .Search, target: self, action: "barButtonItemClicked:"), animated: true)
    self.navigationItem.title = "YourTitle"
    

Non, ça a marché - qu'est-ce que je fais mal? : /

17
Joe

Vous pouvez essayer quelque chose comme ça:

self.title = "Your Title"

var homeButton : UIBarButtonItem = UIBarButtonItem(title: "LeftButtonTitle", style: UIBarButtonItemStyle.Plain, target: self, action: "")

var logButton : UIBarButtonItem = UIBarButtonItem(title: "RigthButtonTitle", style: UIBarButtonItemStyle.Plain, target: self, action: "")

self.navigationItem.leftBarButtonItem = homeButton
self.navigationItem.rightBarButtonItem = logButton
34
Va Visal

Je crois que vous recherchez un titleView.

Essayer:

var navBarTitleView = UIView(frame: CGRectMake(0.0, 0.0, self.view.frame.width, 44.0))
navBarTitleView.backgroundColor = UIColor.brownColor()
self.navigationItem.titleView = navBarTitleView
2
Katafalkas

Je suis presque sûr que vous pouvez simplement définir le titre de votre contrôleur de table, dans son viewDidLoad, qui est le titre affiché dans votre barre de navigation. 

cette réponse explique une question légèrement différente, mais le concept est le même:

https://stackoverflow.com/a/25167491/2070902

1
robotwholearned

si vous souhaitez configurer votre "UINavigationBar" selon votre souhait, veuillez suivre ceci en toute sécurité, il est si simple en langage rapide que nous vous aiderons beaucoup.

ÉTAPE 1:-

Créez une classe de catégorie dans Swift, allez simplement sur "Nouveau fichier" et ajoutez "Classe Swift simple" et donnez-lui le nom "MyCustomNavBarCategory.Swift"  

ÉTAPE 2:-

Juste "Nettoyer la classe (supprimer tout le code de cette classe)" et "Coller mon code ci-dessous" : -

// la classe commencera au-dessous de la ligne commence la copie à partir d'ici

let SCREEN_HEIGHT = UIScreen.mainScreen (). bounds.size.height

importer UIKit

extension UINavigationBar {

//First increase navigation bar height .
override public func sizeThatFits(size: CGSize) -> CGSize {
    NSLog("%f", SCREEN_HEIGHT*0.06);

    let newSize:CGSize = CGSizeMake(self.frame.size.width, SCREEN_HEIGHT*0.10)
    return newSize;
}

//then set layOut of your Custom Nav for several objects like titleview,buttons and all
public override func layoutSubviews() {
   for var view in self.subviews
    {
        NSLog("view %@", view);
        let str :String = view.classForCoder.description();
       if(str == "UILabel")
        {
              //play with title view frame
            var f       = view.frame;
            f.Origin.y  = self.frame.size.height/2 - view.bounds.size.height/2  ;
            view.frame  = f;
            view.backgroundColor = UIColor.greenColor();
        }
        else if(str == "UIButton")
        {

             //play with buttons of navigation bar  view frame
            var f = view.frame;
            f.Origin.y = (self.frame.size.height/2)  - (view.bounds.size.height/2) ;
            view.frame = f;
            view.backgroundColor = UIColor.greenColor();
        }
    }
}

}

// la classe se terminera au-dessus arrêter le code de copie sur la ligne ci-dessus et juste après cela dans votre "MyCustomNavBarCategory.Swift" . c'est ça profiter;). 

ÉTAPE 3: - /. Maintenant, vous pouvez définir n’importe quel cadre pour n’importe quel objet de UINavigationBar de cette classe "C’est une catégorie très puissante de UINavigationBar si vous voulez l’appliquer avec soin"

0
Abhimanyu Rathore