如何保存评级控制值?
How to save a rating control value?
我正在玩弄 DYRateView....我尝试过的一长串控件中的一个控件。可以在这里找到:https://github.com/dyang/DYRateView
我尝试过的所有控件的问题是,评分一旦更改,我似乎无法保存。我正在使用 NSUserDefaults 并尝试将其放置在各种位置,包括值更改的位置、设置视图的位置、viewDidLoad 中的 viewWillAppear 中的源代码本身。保存这个值让我感到困惑。我将不胜感激任何帮助。只是为了了解它应该如何工作,我一直在研究 DYRateView 附带的示例代码。这是相关代码:
THE .M FILE
#import "DemoViewController.h"
@interface DemoViewController ()
- (void)setUpEditableRateView;
@end
@implementation DemoViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSUserDefaults standardUserDefaults] integerForKey:@"rating"];
[self setUpEditableRateView];
}
- (void)setUpEditableRateView {
DYRateView *rateView = [[DYRateView alloc] initWithFrame:CGRectMake(0, 40, self.view.bounds.size.width, 20) fullStar:[UIImage imageNamed:@"StarFullLarge.png"] emptyStar:[UIImage imageNamed:@"StarEmptyLarge.png"]];
rateView.padding = 20;
rateView.alignment = RateViewAlignmentCenter;
rateView.editable = YES;
rateView.delegate = self;
[self.view addSubview:rateView];
[rateView release];
}
- (void)rateView:(DYRateView *)rateView changedToNewRate:(NSNumber *)rate {
self.rateLabel.text = [NSString stringWithFormat:@"Rate: %d", rate.intValue];
[[NSUserDefaults standardUserDefaults] setInteger:rate forKey:@"rating"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
@end
感谢所有抽出时间的人!
您在以下位置获得 rating
valuea:[[NSUserDefaults standardUserDefaults] integerForKey:@"rating"];
但是您用这个值做什么?
我认为您需要获取此值并将其设置为 DYRateView。所以:
- 创建
DYRateView
的 属性:@property DYRateView * rateView
- 在
setUpEditableRateView
上设置:self.rateView = [[DYRateView alloc] initWithFrame:CGRectMake(0, 40, self.view.bounds.size.width, 20) fullStar:[UIImage imageNamed:@"StarFullLarge.png"] emptyStar:[UIImage imageNamed:@"StarEmptyLarge.png"]];
- 更新
self.rateView
(将其添加到 setUpEditableRateView
的末尾):rateView.rate = [[NSUserDefaults standardUserDefaults] integerForKey:@"rating"]
您正在尝试将 NSNumber
保存为 NSInteger
。你应该做 [[NSUserDefaults standardUserDefaults] setInteger:[rate integerValue] forKey:@"rating"];
或使用 - setObject:forKey:
因为 NSNumber
是一个对象,而不是标量。
我正在玩弄 DYRateView....我尝试过的一长串控件中的一个控件。可以在这里找到:https://github.com/dyang/DYRateView
我尝试过的所有控件的问题是,评分一旦更改,我似乎无法保存。我正在使用 NSUserDefaults 并尝试将其放置在各种位置,包括值更改的位置、设置视图的位置、viewDidLoad 中的 viewWillAppear 中的源代码本身。保存这个值让我感到困惑。我将不胜感激任何帮助。只是为了了解它应该如何工作,我一直在研究 DYRateView 附带的示例代码。这是相关代码:
THE .M FILE
#import "DemoViewController.h"
@interface DemoViewController ()
- (void)setUpEditableRateView;
@end
@implementation DemoViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSUserDefaults standardUserDefaults] integerForKey:@"rating"];
[self setUpEditableRateView];
}
- (void)setUpEditableRateView {
DYRateView *rateView = [[DYRateView alloc] initWithFrame:CGRectMake(0, 40, self.view.bounds.size.width, 20) fullStar:[UIImage imageNamed:@"StarFullLarge.png"] emptyStar:[UIImage imageNamed:@"StarEmptyLarge.png"]];
rateView.padding = 20;
rateView.alignment = RateViewAlignmentCenter;
rateView.editable = YES;
rateView.delegate = self;
[self.view addSubview:rateView];
[rateView release];
}
- (void)rateView:(DYRateView *)rateView changedToNewRate:(NSNumber *)rate {
self.rateLabel.text = [NSString stringWithFormat:@"Rate: %d", rate.intValue];
[[NSUserDefaults standardUserDefaults] setInteger:rate forKey:@"rating"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
@end
感谢所有抽出时间的人!
您在以下位置获得 rating
valuea:[[NSUserDefaults standardUserDefaults] integerForKey:@"rating"];
但是您用这个值做什么?
我认为您需要获取此值并将其设置为 DYRateView。所以:
- 创建
DYRateView
的 属性:@property DYRateView * rateView
- 在
setUpEditableRateView
上设置:self.rateView = [[DYRateView alloc] initWithFrame:CGRectMake(0, 40, self.view.bounds.size.width, 20) fullStar:[UIImage imageNamed:@"StarFullLarge.png"] emptyStar:[UIImage imageNamed:@"StarEmptyLarge.png"]];
- 更新
self.rateView
(将其添加到setUpEditableRateView
的末尾):rateView.rate = [[NSUserDefaults standardUserDefaults] integerForKey:@"rating"]
您正在尝试将 NSNumber
保存为 NSInteger
。你应该做 [[NSUserDefaults standardUserDefaults] setInteger:[rate integerValue] forKey:@"rating"];
或使用 - setObject:forKey:
因为 NSNumber
是一个对象,而不是标量。