【问题标题】:Passing a float between multiple viewcontrollers在多个视图控制器之间传递浮点数
【发布时间】:2011-04-15 05:10:12
【问题描述】:

我正在尝试将浮点数从一个视图控制器发送到另一个。

好的,我已经尝试使用 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 升; @synthesize nameField,问候;

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

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

【问题讨论】:

    标签: iphone xcode tabs nsuserdefaults multiviews


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      在委托 .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;
      }
      

      所以你要评估的值是通过setter方法和你想要值的类在currentValue中设置的,只需使用getter方法。

      一切顺利

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-27
        • 2011-07-09
        • 1970-01-01
        相关资源
        最近更新 更多