我使用的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
}
答案 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
值直接设置为存储值?