保存用户默认值[iOS]

保存用户默认值[iOS],ios,objective-c,nsuserdefaults,c4,Ios,Objective C,Nsuserdefaults,C4,我看到了几个例子,但我无法找出在尝试保存文本字段输入并在重新启动应用程序时重新加载时出现了什么问题。 我的.m文件中有类似的内容(.h文件只有一个) 我不确定到底出了什么问题,但当我重新启动应用程序时,加载的文本总是:“8*:å”。不管我保存了什么。设置方法在哪里调用?我认为在viewDidLoad中,您需要初始化,但之前调用了setup方法。 您不保存此信息,所以按钮在初始化之前不识别或加载信息并设置文本。 在设置方法中加载信息 UItextView *k = [UItextView allo

我看到了几个例子,但我无法找出在尝试保存文本字段输入并在重新启动应用程序时重新加载时出现了什么问题。 我的.m文件中有类似的内容(.h文件只有一个


我不确定到底出了什么问题,但当我重新启动应用程序时,加载的文本总是:“8*:å”。不管我保存了什么。

设置方法在哪里调用?我认为在viewDidLoad中,您需要初始化,但之前调用了setup方法。 您不保存此信息,所以按钮在初始化之前不识别或加载信息并设置文本。 在设置方法中加载信息

UItextView *k = [UItextView alloc] init];
k.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"userName"];
看看会是什么

更新:

那是错误的

[c4workspace loadInfoFromDefaults];
[c4workspace alloc]init];  (calls viedidload method with load info)
你需要

[c4workspace alloc]init]; 
[c4workspace loadInfoFromDefaults];
请在创建c4WorkSpace对象的位置发布代码

更新2:

-(void)setup {

    //add text field
    CGRect textViewFrame = CGRectMake(20.0f, 20, self.canvas.width-40, 124.0f);
    textField = [[UITextView alloc] initWithFrame:textViewFrame];
    textField.returnKeyType = UIReturnKeyDone;
    [textField becomeFirstResponder];
    textField.delegate = self;
    //textField.hidden=true;

    [self.view addSubview:textField];

    okButton=[C4Button buttonWithType:ROUNDEDRECT];
    [okButton setTitle:@"Save" forState:NORMAL];
    okButton.center=self.canvas.center;
    [self.canvas addUIElement:okButton];
    [okButton runMethod:@"saveDefault" target:self forEvent:TOUCHUPINSIDE];

    savedText=[C4Label labelWithText:@"default"];
    savedText.center=CGPointMake(self.canvas.center.x, self.canvas.center.y+40);
    [self.canvas addLabel:savedText];
}

- (void) setTextView
{
    textField.text=[[NSUserDefaults standardUserDefaults] objectForKey:@"userName"];
    savedText.text=[[NSUserDefaults standardUserDefaults] objectForKey:@"userName"];
}
所以你称之为:

C4WorkSpace *c4 = [C4WorkSpace alloc] init];
[c4 setup]
[c4 setTextView];

我发现最简单的解决办法就是开始


ViewDidLoad

text=[[NSUserDefaults standardUserDefaults] objectForKey:@"userName"];
设置中

if (text!=nil) {
        textField.text=text;
    }

这有什么问题?尝试在viewDidLoadWhere是runMethod中使用NSString而不是NSMutableString?您还没有告诉我们问题出在哪里。您可能会发现阅读@Firegab很有用,但无论何时运行它,加载的视图都只会给我这个“'8*:å”…您能再解释一下吗?该注释对我有何帮助?viewDidLoad是在设置之前调用的。这是错误的,您调用viewDidLoad,并将变量设置为undefined uitextview,因此文本将不正确。您需要在不从default加载的情况下调用viewdidload,那么解决方案是什么呢?在viewDidLoad中设置文本字段?查看我的答案,我更新了两次。例如,在viewDidLoad中创建textfield,或在setup方法中设置.text参数。
if (text!=nil) {
        textField.text=text;
    }