Iphone 保存UISlider的值

Iphone 保存UISlider的值,iphone,nsuserdefaults,Iphone,Nsuserdefaults,我成功地在Cocos2D中实现了一个UISlider,这让我感到惊讶 我已经查看了所有的NSUserDefaults示例,但是没有任何东西可以正常工作。我只是想知道是否有人能帮忙。我想我保存的值是正确的 - (void) valueChanged:(float) value tag:(int) tag{ if (tag == 1) // music volume [self updateLabel:value]; [CDAudioManager sharedMan

我成功地在Cocos2D中实现了一个
UISlider
,这让我感到惊讶

我已经查看了所有的
NSUserDefaults
示例,但是没有任何东西可以正常工作。我只是想知道是否有人能帮忙。我想我保存的值是正确的

- (void) valueChanged:(float) value tag:(int) tag{
    if (tag == 1) // music volume
        [self updateLabel:value];
    [CDAudioManager sharedManager].backgroundMusic.volume = value;

    CCLOG (@"Unknown slider");

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    [prefs setFloat:value forKey:@"floatKey"];
    [prefs synchronize];
}
它只是在我有点卡住的地方重新加载默认值,我把它放在我的类的初始化中。我甚至不确定它是否应该去那里

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if ([userDefaults floatForKey:@"floatKey"]) {
    [userDefaults setFloat:value forKey:@"floatKey"];
}

在初始化过程中,您在prefs中设置
floatKey
的值,而不是获取该值。你可能想要这样的东西:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
float value = [userDefaults floatForKey:@"floatKey"]; //read the value from the defaults
[CDAudioManager sharedManager].backgroundMusic.volume = value; //use the value

在初始化过程中,您在prefs中设置
floatKey
的值,而不是获取该值。你可能想要这样的东西:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
float value = [userDefaults floatForKey:@"floatKey"]; //read the value from the defaults
[CDAudioManager sharedManager].backgroundMusic.volume = value; //use the value

有些人在短短的几分钟内问了更多的问题:)哈哈,我讨厌问问题,但当我找不到工作时,我真的很生气。这是我在cocos2d上工作的第三周,我在慢慢学习,但这是一场噩梦哈哈。有些人在短短的几分钟内问了更多的问题:)哈哈,我讨厌问问题,但当我无法找到工作时,我真的很烦。这是我使用cocos2d的第三周,我在慢慢学习,但这是一场噩梦哈哈。谢谢你的帮助,首先,我在第一段代码中正确保存了音量值吗?我刚刚试过你的代码,它抛出了一个错误“本地声明'userDefaults'隐藏实例变量”我希望我在这里不太清楚:)你已经有一个名为
value
的实例变量了吗?如果是这样,只需重命名代码片段中的变量即可。除此之外,你的储蓄部分很好。是的,我觉得我必须改变这一点,但它仍然不正确。你介意看看我的设置页面吗`CCSlider*musicVolumeSlider=[[CCSlider alloc]init]autorelease];musicVolumeSlider.position=CGPointMake(90,70);musicVolumeSlider.value=0;musicVolumeSlider.delegate=self;[self-addChild:musicVolumeSlider z:0标记:1]`从userDefaults中检索滑块后,我看不到您在哪里再次设置滑块的值。好的,这是我设置值的地方,我没有意识到我在这里需要一些东西:(
-(void)setValue:(float)newValue{if(newValue<0)newValue=0;if(newValue>1.0)newValue=1.0;value=newValue;CCSprite*thumb=(CCSprite*)[[self children]objectAtIndex:1];CGPoint pos=thumb.position;pos.x=minX+newValue*(maxX-minX);thumb.position=pos;}
感谢您的帮助,首先,我是否在第一段代码中正确保存了音量值?我刚刚尝试了您的代码,它抛出了一个错误“本地声明'userDefaults'隐藏实例变量”我希望我在这里不太清楚:)您是否已经有一个名为
value
的实例变量?如果是这样,只需重命名代码片段中的变量即可。除此之外,你的储蓄部分很好。是的,我觉得我必须改变这一点,但它仍然不正确。你介意看看我的设置页面吗`CCSlider*musicVolumeSlider=[[CCSlider alloc]init]autorelease];musicVolumeSlider.position=CGPointMake(90,70);musicVolumeSlider.value=0;musicVolumeSlider.delegate=self;[self-addChild:musicVolumeSlider z:0标记:1]`从userDefaults中检索滑块后,我看不到您在哪里再次设置滑块的值。好的,这是我设置值的地方,我没有意识到我在这里需要一些东西:(
-(void)setValue:(float)newValue{if(newValue<0)newValue=0;if(newValue>1.0)newValue=1.0;value=newValue;CCSprite*thumb=(CCSprite*)[[self children]objectAtIndex:1];CGPoint pos=thumb.position;pos.x=minX+newValue*(maxX-minX);thumb.position=pos;}