titre UINavigationBar et un bouton droit
-
12-09-2019 - |
Question
J'ai un contrôleur de navigation et un contrôleur de vue:
-NavigationController1
--MyViewController
Et ainsi j'ai un autre contrôleur de navigation - NavigationController2. Je veux appeler MyViewController d'un autre contrôleur de vue - ViewController2, qui a été poussé dans NavigationController2. -NavigationController2 --ViewController2
Je fais de la manière suivante:
@implementation ModifyDicVController
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.navigationItem.rightBarButtonItem = [ [ [UIBarButtonItem alloc]
initWithBarButtonSystemItem:
UIBarButtonSystemItemAdd target:self
action:@selector(add_clicked)] autorelease];
}
-(void) add_clicked
{
[navigationController pushViewController: addWordsVController animated: YES];
}
@end
Et voici la méthode viewWillAppear de MyViewController (celui qui est appelé):
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self setTitle: @"My title"];
}
Je suis ajout d'un bouton « fait » à la barre de navigation lorsque l'utilisateur commence à modifier un champ texte:
- (void) textFieldDidBeginEditing: (UITextField *) textField
{
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc]
initWithTitle: NSLocalizedString(@"button: done", @"")
style:UIBarButtonItemStyleDone
target:self
action:@selector(doneEditing)]
autorelease];
}
Le problème est le suivant: si je l'appelle MyViewController de ViewController2 qui a été poussé dans NavigationController2 et après que j'appelle MyViewController de sa propre NavigationController1, le titre d'une barre de navigation et un bouton fait ne sont pas ajoutés. Cependant, les méthodes viewWillAppear et textFieldDidBeginEditing de MyViewController sont appelés.
Quel est le problème et comment puis-je résoudre ce problème?
Merci.
La solution
Votre question est un peu déroutant.
I « pense » que vous dites que vous rencontrez des problèmes de communication entre les contrôleurs de vue.
Si tel est le cas, la vraie question est que vos contrôleurs de vue doivent pas communiquer entre eux. Ils, au lieu devraient être stockaient état dans un modèle.
Si vous faites cela, vous aurez aucun problème. Envisager d'avoir un singleton de modèle pour enregistrer les informations qui se perdre.
Si j'ai mal compris votre question, s'il vous plaît laissez-moi savoir.
Autres conseils
Pour modifier l'utilisation de titres à l'unité de commande d'affichage qui est actuellement sur le dessus de la pile (active).
self.navigationItem.title=@"the title";