2010-09-21 5 views
0

Je tente d'envoyer un flottant d'un contrôleur de vue à un autre.Passage d'un flotteur entre plusieurs contrôleurs de vue

Ok J'ai essayé d'utiliser NSUserDefaults pour résoudre ce problème. D'abord je l'ai testé avec une corde et ça a marché, mais maintenant j'ai du mal à faire de même avec mon flotteur. Toute aide serait appréciée! :) Heres mon code

Dans mon fichier firstviewcontroller.h j'ai

IBOutlet UITextField *nameField; 
IBOutlet UILabel *greeting; 
float RWI; 
float Liters; 

@property(nonatomic) float *Liters;` 
@property(nonatomic, retain); IBOutlet UILabel *greeting; 
@property(nonatomic, retain) IBOutlet UITextField *nameField; 

-(IBAction) updatePrefs:(id) sender; @property(nonatomic) float *RWI; ` 

Dans mon fichier .m je RWI flottant; // @ synthétise RWI; @synthesize Litres; @synthesize nameField, salutation;

-(IBAction) updatePrefs:(id) sender 
{ 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setObject:nameField.text forKey:@"greeting"]; 
[prefs setFloat:20 forKey:@"Liters"]; 
[prefs synchronize] 

Ensuite, le fichier secondviewcontroller.h

IBOutlet UILabel *greeting; 
float *Liters; 
} 
@property(nonatomic, retain) IBOutlet UILabel *greeting; 
@end` 

Dans mon fichier .m

@implementation secondviewcontroller 
@synthesize greeting; 
@synthesize Liters; 

- (void)viewDidLoad { 
[super viewDidLoad];NSString *prefs = 
[[NSUserDefaults standardUserDefaults] objectForKey:@"greeting"]; 
float Liters = [prefs floatForKey:@"Liters"]; 
greeting.text = prefs; 
}` 

Pourquoi mon char donner des erreurs? Toute aide serait appréciée! :)

Répondre

3

L'erreur que vous êtes expérimenté est dû au fait que prefs est pas [NSUserDefaults standardUserDefaults] comme il devrait être, parce que dans votre déclaration précédente que vous faites

NSString *prefs = 
[[NSUserDefaults standardUserDefaults] objectForKey:@"greeting"]; 

donc prefs est un objet NSString. Vous devez modifier

float Liters = [prefs floatForKey:@"Liters"]; 

à

float Liters = [[NSUserDefaults standardUserDefaults] floatForKey:@"Liters"]; 
0

Vous pouvez passer une variable flottante d'une vue à une autre vue en mettant en œuvre getter et setters dans la classe des délégués.

Dans délégué .h fichier

Inclure délégué UIApplication

@interface DevAppDelegate : NSObject <UIApplicationDelegate> 

float currentValue; 

- (void) setCurrentValue:(float) currentValue; 
- (float) getCurrentValue; 

Dans délégué classe d'implémentation .m

-(void) setCurrentValue:(float) storydata{ 
currentValue = storydata; 
} 

-(float) getCurrentValue{ 
return currentValue; 
} 

donc la valeur à évaluer est définie dans la currentValue par la méthode des setters et classe où vous voulez la valeur, utilisez simplement la méthode getter. Tous les meilleurs

Questions connexes