在我的项目中我有一个UISlider,它有固定的位置工作正常,但是当我尝试使用NSUserDefaults保存值时,位置没有任何意义,它会覆盖固定位置。我试图将保存的值与5000分开,然后接近该位置,但它仍然与默认情况下滑块的位置不同。
保存完全相同位置的逻辑计算是什么?
NSString *afsValue = [[NSUserDefaults standardUserDefaults]
stringForKey:@"distValue"];
slider = [[UISlider alloc] initWithFrame:CGRectMake(28,205,264,50)];
[slider setThumbImage:[UIImage imageNamed:@"car80"] forState:UIControlStateNormal];
[slider setMinimumTrackTintColor:[UIColor colorWithRed:0.110f green:0.224f blue:0.400f alpha:0.85f]];
[slider setMaximumTrackTintColor:[UIColor whiteColor]];
[self.view addSubview:slider];
numbers = @[@(3000), @(5000), @(10000), @(15000), @(25000), @(50000), @(75000), @(500000)];
NSInteger numberOfSteps = ((float)[numbers count] - 1);
slider.maximumValue = numberOfSteps;
slider.minimumValue = 0;
slider.value = (float) [afsValue intValue]/5000;
slider.continuous = YES;
[slider addTarget:self
action:@selector(valueChanged:)
forControlEvents:UIControlEventValueChanged];
- (void)valueChanged:(UISlider *)sender {
NSUInteger index = (NSUInteger)(slider.value + 0.5);
[slider setValue:index animated:NO];
NSNumber *number = numbers[index];
[[NSUserDefaults standardUserDefaults] setObject:number forKey:@"distValue"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
答案 0 :(得分:0)
问题是你保存到NSUserDefaults的不是滑块的value
,而是来自value
的一些奇怪的其他值派生的(通过做一些难以理解的查找numbers
数组)。只需保存实际的value
,因为这是滑块的位置。
答案 1 :(得分:0)
知道了,我将slider.value和NUMBER值存储在两个单独的NSUserdefaults中。
- (void)valueChanged:(UISlider *)sender {
NSUInteger index = (NSUInteger)(slider.value + 0.5);
[slider setValue:index animated:NO];
NSNumber *number = numbers[index];
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:slider.value] forKey:@"totalValue"];
[[NSUserDefaults standardUserDefaults] setObject:number forKey:@"distValue"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
感谢您指出。 RG。