我有以下代碼使用步進器來設置myLabel的值。 我有它設置爲存儲到NSUserDefaults的值。UIStepper - 設置值從NSUserDefaults
1)我還需要將步進值設置爲與我放入標籤的值相同的值。有人可以建議如何做到這一點嗎? (我已經在代碼中添加了一條評論,我覺得應該是這樣)
2)我還想在加載saveString之前檢查它是否實際設置,如果沒有,請設置默認值。你還可以建議如何實現這一目標?
謝謝。
- (void)viewWillAppear:(BOOL)animated
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *loadString = [defaults objectForKey:@"saveString"];
self.myLabel.text = loadString;
// Need to set the stepper value to that in loadString
}
- (IBAction)stepChanged:(id)sender {
NSString *saveString = [NSString stringWithFormat:@"%d",
[[NSNumber numberWithDouble:[(UIStepper *)sender value]] intValue]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:saveString forKey:@"saveString"];
[defaults synchronize];
self.myLabel.text = saveString;
}
我已經更新了代碼如下: -
- (void)viewWillAppear:(BOOL)animated
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSNumber *loadNumber = [defaults objectForKey:@"saveNumber"];
self.myLabel.text = [NSString stringWithFormat:@"%@",loadNumber];
UIStepper *stepper = [[UIStepper alloc] init];
stepper.value = [NSNumber numberWithDouble:loadNumber];
}
- (IBAction)stepChanged:(id)sender {
NSNumber *saveNumber = [NSNumber numberWithDouble:[(UIStepper *)sender value]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:saveNumber forKey:@"saveNumber"];
[defaults synchronize];
self.myLabel.text = [NSString stringWithFormat:@"%@",saveNumber];
}
然而, '線stepper.value = [NSNumber的numberWithDouble:loadNumber];'錯誤'發送'NSNumber * __ strong'到不兼容類型'double''的參數。我認爲步進器只會接受一個double,但我不確定我在做錯什麼設置。需要實現的是: - 1)在NSUserDefaults中爲saveNumber設置一個默認值,直到用戶做出變化時纔會使用它。2)在加載或查看時出現,使用saveNumber來設置值這兩個stepper.value和myLabel 3)確保用步進器更改時,值在myLabel中更新,NSUserDefaults saveNumber也更新。請問?
此外,我剛纔意識到的一點是,在最終的應用程序中,我將在不同的viewController上使用NSUserDefaults savedNumber值的設置。考慮到這一點,你是否也可以讓我知道如何確保savedNumber不僅適用於此viewController,而且還有其他我需要的值?
非常感謝。
stepper.value ='[loadNumber doubleValue];'應該做的伎倆。由於信息保存在本地文件系統中,因此NSUserDefaults也可用於所有其他視圖控制器。就像您現在所做的那樣,只需在其他視圖控制器中獲取您的信息。 – dehlen
@dehlen請看看http://stackoverflow.com/questions/20708074/ios-uistepper-nsuserdefaults-how-to-manage-them-together-and-use-a-double。我已經得到了你現在所說的,但仍然有問題。 – MrNeilM