我试图将一个浮动从一个视图控制器发送到另一个视图控制器。
好的,我曾尝试过使用NSUserDefaults来解决这个问题。首先,我用一个字符串测试它,它工作,但现在我正在努力与我的浮动做同样的事情。任何帮助,将不胜感激! :)继承我的代码
在我的firstviewcontroller.h文件中,我有
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; `
在我的.m文件中 浮动RWI; // @合成RWI; @synthesize升; @synthesize nameField,greeting;
-(IBAction) updatePrefs:(id) sender
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:nameField.text forKey:@"greeting"];
[prefs setFloat:20 forKey:@"Liters"];
[prefs synchronize]
然后是secondviewcontroller.h文件
IBOutlet UILabel *greeting;
float *Liters;
}
@property(nonatomic, retain) IBOutlet UILabel *greeting;
@end`
在我的.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;
}`
为什么我的浮点数会出错?任何帮助,将不胜感激! :)
答案 0 :(得分:3)
您遇到的错误是因为prefs
不是[NSUserDefaults standardUserDefaults]
,因为在您之前的陈述中你做了
NSString *prefs =
[[NSUserDefaults standardUserDefaults] objectForKey:@"greeting"];
因此,prefs
是NSString
个对象。你需要修改
float Liters = [prefs floatForKey:@"Liters"];
到
float Liters = [[NSUserDefaults standardUserDefaults] floatForKey:@"Liters"];
答案 1 :(得分:0)
您可以通过在委托类中实现getter和setter,将float变量从一个视图传递到另一个视图。
在委托.h文件中
包括UIApplication委托
@interface DevAppDelegate : NSObject <UIApplicationDelegate>
float currentValue;
- (void) setCurrentValue:(float) currentValue;
- (float ) getCurrentValue;
在Delegate实现类.m
中-(void) setCurrentValue:(float) storydata{
currentValue = storydata;
}
-(float ) getCurrentValue{
return currentValue;
}
因此,要评估的值是通过setters方法和类在currentValue中设置的,只需使用getter方法。
一切顺利