1

我正在使用带有两个部分的 UISegmentedControl:第一个是不要记住密码,第二个是记住密码。如果他们选择记住密码,我使用 NSUserDefaults 来记住这一点。启动时,如果 NSUserDefaults 为 YES,如何选择记住密码?

if ([[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Remember password"] == YES)
{

    //Make the second segment (segment 1 as it would be called, since first is segment 0) selected
}
4

2 回答 2

3

在处理布尔设置时,我建议使用 UISwitch 而不是分段控件。该开关将激活或停用记住密码。

您设置值的方式是正确的,以获取您使用的值:

[[NSUserDefaults standardUserDefaults] boolForKey:@"Remember password"];

所以如果你使用 UISwitch 你可以这样做:

switch.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"Remember password"];

如果您确实想使用 UISegmentedControl 它会更长一些,但同样简单:

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"Remember password"]) {
        segmentedControl.selectedSegmentIndex = 1;
    }
    else{
        segmentedControl.selectedSegmentIndex = 0;
    }

请记住,在处理布尔设置时 UISwitch 对用户来说更有意义。

更新:

要使用开关设置值,您只需执行以下操作:

[[NSUserDefaults standardUserDefaults] setBool:switch.on forKey:@"Remember password"];

它比使用 UISegmentedControl 简单得多。

于 2011-07-12T19:14:30.263 回答
3

就像在 viewDidLoad 中设置 selectedSegmentIndex 一样简单,以确保段不为零。

-(void)viewDidLoad
{
    [super viewDidLoad];

    if([[NSUserDefaults standardUserDefaults] boolForKey:@"Remember Password"])
    {
        segment.selectedSegmentIndex = 1;
    }
    else
    {
        segment.selectedSegmentIndex = 0;
    }
}

另外为什么不使用 aUISwitch并将on值直接设置为存储的值?

于 2011-07-12T19:15:15.730 回答