2011-08-31 3 views
0

code suivant change le nom de l'onglet et puis sélectionnez l'index 2.problèmes appelant méthode d'instance

[(UITabBarItem*)[self.rootController.tabBar.items objectAtIndex:0] setTitle:@"User"]; 

self.rootController.selectedIndex = 2; 

Cependant, il fonctionne par exemple lorsque la méthode app didFinishLaunching mais ne fonctionne pas lorsqu'il est appelé comme suit.

contact à l'intérieur de bouton déclenche renameTabs:

- (IBAction) renameTabs: (id)sender 
{ 
    CompanyAppDelegate *theInstance = [[CompanyAppDelegate alloc] init]; 
    [theInstance rename]; 

} 

et dans le contrôleur:

- (void) rename 
    { 

     [(UITabBarItem*)[self.rootController.tabBar.items objectAtIndex:0] setTitle:@"User"]; 

     self.rootController.selectedIndex = 2; 

    } 

fonction de changement de nom est déclenchée et également défini à .h. Pas d'erreurs mais rien ne change! Y a-t-il quelque chose qui ne va pas?? Merci

Répondre

3

Vous ne devriez pas créer de nouveau CompanyAppDelegate. Essayez de mettre en œuvre la méthode sharedAppDelegate dans CompanyAppDelegate.m:

+ (CompanyAppDelegate *)sharedAppDelegate 
{ 
    return (CompanyAppDelegate *) [UIApplication sharedApplication].delegate; 
} 

Ne pas oublier de le déclarer dans CompanyAppDelegate.h.

Et remplacer renameTabs avec celui-ci:

- (IBAction) renameTabs: (id)sender 
{ 
    CompanyAppDelegate *theInstance = [CompanyAppDelegate sharedAppDelegate]; 
    [theInstance rename]; 
} 
+0

Salut, s'écraser encore. Maintenant renommer n'est pas atteint, recevoir un signal Sigabrt lorsque vous essayez d'appeler renommer. – Ruth85

+0

Votre 'CompanyAppDelegate' ressemble-t-il à ceci:' @interface CompanyAppDelegate: NSObject '? Qu'est-ce qui renvoie '[CompanyAppDelegate sharedAppDelegate];'? – Nekto

+0

oui, ressemble à @interface CompanyAppDelegate: NSObject et [CompanyAppDelegate sharedAppDelegate]; renvoie 0x5b59350 et (gbd) sur le terminal de sortie. – Ruth85

0

[Ah, quand j'ai lu ceci pour la première fois, je pensais que vous aviez dit que le renommage n'était pas atteint. Peu importe.]

+0

Oui, renommer est atteinte et exécutée sans erreur, mais semble que faire quoi que ce soit – Ruth85

1
- (IBAction) renameTabs: (id)sender 
{ 
    CompanyAppDelegate *theInstance = (CompanyAppDelegate *) [UIApplication sharedApplication].delegate; 
    [theInstance rename]; 

} 

- (void) rename 
    { 

     [(UITabBarItem*)[self.rootController.tabBar.items objectAtIndex:0] setTitle:@"User"]; 

     self.rootController.selectedIndex = 2; 

    } 
Questions connexes