2010-01-04 5 views
0

J'ai une application de barre d'onglets. L'un des contrôleurs est une "page de préférences". Ce que j'essaye de faire accomplir est d'accéder à l'uiswitch ivar qui se trouve sur le contrôleur "page de préférences" à partir de la méthode applicationWillTerminate du délégué de l'application, mais j'obtiens seulement la valeur IUSwitch par défaut.Accès à un autre contrôleur IBOutlet du contrôleur d'application

Voici le code:

- (void)applicationWillTerminate:(UIApplication *)application { 
    SettingsController *settings = [[SettingsController alloc] initWithNibName:@"SettingsView" bundle:nil]]; 
    NSLog(@"settings preference value: %d", [settings isOn]); 
} 

Répondre

0

Ce ne fonctionnera pas parce que votre créent essentiellement une autre instance nouvelle de SettingsController qui bien sûr ne sera pas inclure une référence aux paramètres Ivar dans le SettingsController d'origine. Ce que vous devez faire est d'enregistrer une référence à SettingdController d'origine quelque part, soit dans le délégué de l'application ou dans un objet singleton.

Here's a good blog d'utiliser la méthode de délégué ou de singleton de l'application pour transmettre des références globales. J'utiliserais personnellement la méthode singleton.

+0

vous avez exactement raison. (j'ai oublié de mentionner que j'ai reconnu que ma méthodologie actuelle était défectueuse). Y a-t-il un moyen simple d'accomplir ce que je suis en train de faire ou devrais-je emprunter un autre chemin? –

+0

voir le lien que j'ai fourni dans la réponse pour les façons de traiter cela. – ennuikiller

Questions connexes