Question

Salut à tous. Je suis encore assez nouveau pour le développement iPhone, et je vais avoir un peu de difficulté à comprendre comment changer le titre de ma barre de navigation. Sur une autre question sur ce quelqu'un site recommandé d'utiliser:

viewController.title = @"title text";

mais qui ne fonctionne pas pour moi ... Ai-je besoin d'ajouter un UINavigationController pour y parvenir? Ou peut-être juste une sortie de ma sous-classe UIViewController? Si elle aide, je définissais la barre de navigation IB et je suis en train de mettre son titre dans ma sous-classe UIViewController. Ceci est une autre de ces choses simples qui me donne un mal de tête. Mettre self.title = @ "texte du titre"; dans viewDidLoad et initWithNibName ne fonctionnait pas non plus. Tout le monde sait ce qui se passe et comment on le passe droit?

Merci!

Était-ce utile?

La solution

Le contrôleur de vue doit être un enfant de certains UINavigationController pour la propriété .title pour prendre effet. Si le UINavigationBar est tout simplement une vue, vous devez appuyer sur un élément de navigation contenant le titre, ou modifier le dernier élément de navigation:

UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

ou

bar.topItem.title = @"title text";

Autres conseils

si vous faites tout par le code dans la méthode viewDidLoad du UIViewController vous ne devez ajouter self.title = @"title text";

quelque chose comme ceci:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"title";
}

vous pouvez également essayer self.navigationItem.title = @"title";

également vérifier si votre navigationItem est non nul et si vous avez défini un arrière-plan personnalisé au navigationbar vérifier si le titre est défini sans elle.

Il y a un problème avec l'aide self.title = @"title";

Si vous utilisez la barre de navigation avec barre d'onglets, la ligne ci-dessus modifie également l'étiquette de la barre d'onglets Item. Pour éviter cela, utilisez ce @testing suggéré

self.navigationItem.title = @"MyTitle";

Si vous voulez modifier le titre de barre de navigation (non navbar retour titre du bouton!) Ce code sera le travail.

self.navigationController.topViewController.title = @"info";

Si vous voulez changer le titre d'un Navbar dans un contrôleur tabBar, procédez comme suit:

-(void)viewDidAppear:(BOOL)animated {
    self.navigationController.navigationBar.topItem.title = @"myTitle";
}

Dans mon application à base de navigation que je fais ceci:

myViewController.navigationItem.title = @"MyTitle";

J'ai eu des contrôleurs de navigation intégrés dans un TabbarController. Cela a fonctionné

self.navigationItem.title=@"title";

Par défaut, le contrôleur de navigation affiche le titre de la « TopItem »

dans votre méthode de viewDidLoad de votre appdelegate vous pouvez. Je l'ai testé et il fonctionne

navController.navigationBar.topItem.title = @"Test";
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

Ce code a fonctionné.

Si vous travaillez avec des storyboards, vous pouvez cliquer sur le contrôleur, passez à l'onglet Propriétés et définissez le texte du titre il.

Je suppose que vous avez besoin d'un titre dynamique qui est la raison pour laquelle vous ne définissez pas dans IB.

Et je suppose que votre objet viewController est celui spécifié dans le NIB?

Peut-être essayer la mise à une valeur factice dans IB et déboguer les méthodes pour voir quel contrôleur a la valeur fictive - en supposant qu'il apparaît comme le titre ...

À partir de votre TableViewController.m :

  

self.navigationController.navigationBar.topItem.title = @ "Bla bla Certains titre exceptionnel";

Pour tous vos Swift-ers là-bas, cela a parfaitement fonctionné pour moi. Il est notamment l'un des moyens plus courts pour accomplir la mise en titre, ainsi:

override public func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  if segue.identifier == "presentLineItem" {
    print("Setting Title")
    var vc = segue.destinationViewController as! LineItemsTableViewController
    vc.navigationItem.title = "Line Item"
  }
}

Ce qui a fonctionné pour moi a été self.titleLabel.text = @"New Title";

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top