Передача поплавка между несколькими viewcontrollers
Я пытаюсь отправить float от одного viewcontroller к другому.
Хорошо, я попытался использовать 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 файле у меня есть float RWI; //@synthes 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;
}`
Почему мой float дает ошибки? Любая помощь будет оценена!:)
2 ответа
Ошибка, с которой вы столкнулись, связана с тем, что prefs
не является [NSUserDefaults standardUserDefaults]
как и должно быть, потому что в своем предыдущем заявлении вы делаете
NSString *prefs =
[[NSUserDefaults standardUserDefaults] objectForKey:@"greeting"];
следовательно, prefs
это NSString
объект. Вам нужно изменить
float Liters = [prefs floatForKey:@"Liters"];
в
float Liters = [[NSUserDefaults standardUserDefaults] floatForKey:@"Liters"];
Вы можете передать переменную с плавающей точкой из одного представления в другое, реализовав методы getter и setters в классе делегата.
В делегате.h файл
Включить делегата UIApplication
@interface DevAppDelegate : NSObject <UIApplicationDelegate>
float currentValue;
- (void) setCurrentValue:(float) currentValue;
- (float ) getCurrentValue;
В классе реализации делегата.m
-(void) setCurrentValue:(float) storydata{
currentValue = storydata;
}
-(float ) getCurrentValue{
return currentValue;
}
Таким образом, значение, которое вы оцениваете, задается в currentValue методом setters и классом, в котором вы хотите получить значение, просто используйте метод getter.
Всего наилучшего