2011-03-23 5 views
0

je veux partager des données entre des vues ...données entre les vues UIApplication

i ont la appdelegate d'application TabBar:

myappdelegate.h

#import <UIKit/UIKit.h> 

@interface myappdelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> { 
    UIWindow *window; 
    UITabBarController *tabBarController; 
    NSString *result; 
} 


@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController; 

@property (copy , readwrite) NSString *result; 


@end 

si je veux appeler avec cette commande, il y a l'indice: "ne peut pas répondre" ....

myappdelegate *dataCenter = [(myappdelegate *)[UIApplication sharedApplication] delegate]; <<may not respond 
    dataCenter.result = @"msg"; 

result_view *resultView = [[result_view alloc] initWithNibName:@"result_view" bundle:nil]; 
[self.navigationController pushViewController:resultView animated:YES]; 
[resultView release]; 

result_view.m

- (void)viewDidLoad 
{ 
    myappdelegate *dataCenter = (myappdelegate*)[[UIApplication sharedApplication]delegate]; 

    [label setText:dataCenter.result]; 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
} 

le programme se bloque ...

+0

Parce que la propriété est appelée 'result', pas' result_array'. – Jilouc

+0

sry je viens de le changer ... – Phil

Répondre

0

Votre code dit que le sharedApplication est de la classe myappdelegate, qui ne répond pas en effet à delegate. Pour ce faire:

(myappdelegate *)[[UIApplication sharedApplication] delegate]; 

pour supprimer l'avertissement. En raison de la messagerie d'exécution d'Objective-C, votre code actuel (générateur d'alerte) ne plantera pas l'application. L'accident est ailleurs.

+0

mmh c'est bien ...! plus d'avertissements mais la chaîne n'est pas transférée ... après cela je voudrais ouvrir la vue pour les résultats ...: result_view * resultView = [[result_view alloc] initWithNibName: @ "result_view" bundle: nil]; [self.navigationController pushViewController: resultView animé: OUI]; [release resultView]; – Phil

0

Votre première ligne doit être

myappdelegate *dataCenter = (myappdelegate *)[[UIApplication sharedApplication] delegate]; 

Quant à la deuxième ligne, je ne peux pas dire ce que vous attendez de se produire. Vous n'avez pas de propriété result_array sur votre classe myappdelegate, vous ne pouvez donc pas définir cette propriété.

Si vous essayez de définir la propriété result, vous devriez avoir écrit

dataCenter.result = @"msg"; 
+0

j'ai mis à jour mon poste .. thx ^^ – Phil