在多个视图控制器之间传递浮动

发布于 2024-09-24 04:18:43 字数 1379 浏览 9 评论 0原文

我试图将浮动从一个视图控制器发送到另一个视图控制器。

好吧,我尝试使用 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; //@synthesize RWI; @合成升; @synthesize nameField,问候语;

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

然后对于第二个viewcontroller.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;  
}`

为什么我的浮动会出错?任何帮助将不胜感激! :)

Im trying to send a float from one viewcontroller to another.

Ok Ive tried using NSUserDefaults to go about this. First I tested it with a string and it worked, but now I'm struggling to do the same with my float. Any help would be appreciated! :) Heres my code

In my firstviewcontroller.h file i have

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; `

In my .m file I have
float RWI;
//@synthesize RWI;
@synthesize Liters;
@synthesize nameField,greeting;

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

Then for the secondviewcontroller.h file

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

In my .m file

@implementation secondviewcontroller
@synthesize greeting;
@synthesize Liters;

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

Why does my float give errors? Any help would be appreciated! :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

抠脚大汉 2024-10-01 04:18:43

您遇到的错误是由于 prefs 不是应有的 [NSUserDefaults standardUserDefaults] ,因为在您之前的语句中您这样做

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

,因此, prefs 是一个 NSString 对象。您需要修改

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

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

The error you are experienced is due to the fact that prefs is NOT [NSUserDefaults standardUserDefaults] as it should be, because in your previous statement you do

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

therefore, prefs is a NSString object. You need to modify

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

to

float Liters  = [[NSUserDefaults standardUserDefaults] floatForKey:@"Liters"];
一指流沙 2024-10-01 04:18:43

您可以通过在委托类中实现 getter 和 setter 将浮点变量从一个视图传递到另一个视图。

在 delegate .h 文件中

包含 UIApplication delegate

@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 方法即可。

一切顺利

You can pass a float variable from one view to another view by implementing getter and setters in the delegate class.

In delegate .h file

Include UIApplication delegate

@interface DevAppDelegate : NSObject <UIApplicationDelegate>

float currentValue;

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

In Delegate implementation class .m

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

-(float ) getCurrentValue{
return currentValue;
}

So the value you to assess is set in the currentValue by setters method and class where you want the value ,just use the getter method.

All the best

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文