UISegmentedControl的选定部分

时间:2011-07-12 19:06:09

标签: iphone ios nsuserdefaults uisegmentedcontrol segment

我使用的UISegmentedControl有两个部分:第一部分是“不记住密码”,第二部分是“记住密码”。如果他们选择记住密码,我会使用NSUserDefaults记住这一点。启动时,如果NSUserDefaults为YES,如何选择Remember Password?

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
}

2 个答案:

答案 0 :(得分: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简单得多。

答案 1 :(得分:3)

就像在viewDidLoad中设置selectedSegmentIndex一样简单,以确保该段不是nil。

-(void)viewDidLoad
{
    [super viewDidLoad];

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

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