如何从分段控件接收输入

时间:2011-05-31 02:13:49

标签: cocoa-touch ios nsuserdefaults uisegmentedcontrol

我正在尝试从分段控件接收用户选择,然后将其保存到NSUserDefaults,即,如果选择了第一个段,则将int“1”保存到NSUserDefaults,但如果选择了第二个段,则将int“2”保存到NSUserDefaults。

4 个答案:

答案 0 :(得分:8)

- (IBAction)totalAction:(id)sender {
    toggleNav = sender; // this is your segmented control 
    if ([toggleNav selectedSegmentIndex] == 0) {
        NSlog(@"i am here");
    } else if ([toggleNav selectedSegmentIndex] == 1) {
        NSlog(@"i am here");
    }
}

答案 1 :(得分:3)

最简单的方法是使用绑定。将所选控件的索引绑定到共享用户默认控制器,并将模型键路径设置为您要使用的首选项键。

编辑添加:我发现您没有指定Mac或iOS。如果它是Mac,绑定绝对是简单的方法,而iOS上没有绑定。

分段控制值从0开始的事实并不重要。您可以绑定选定的标记而不是选定的索引,然后使用您想要的任何标记值。

答案 2 :(得分:1)

不要听上面的那个人。你应该知道的第一件事是UISegmentedControl从0开始。所以第一个柱是0,第二个是1,第三个是2,等等...... 如果你想从零开始,只需在获得值后将一个加到整数。 (往下看) 要在更改时获取其值,请连接一个IBAction方法并将其连接到您的UISegmentedControl。使用valueChanged进行操作,而不是使用touchUpInside。然后在你的IBAction方法中,假设它被称为“theMethod”,使用此代码。

-(IBAction)theMethod {
int theInteger;
theInteger = [segmentedController selectedSegmentIndex];//segmentedController is the name of your UISegmentedController.
//theInteger ++; //adds 1 to the integer so as to start the numbering at 1 instead of 0 like I have explained up above.

然后,您可以使用NSUserDefaults保存整数。

注意,如果要保存整数,则需要将整数转换为NSNumber,因为无法保存整数或变量,只能保存对象。 为此,我将使用以下内容:

NSNumber *myNumber = [NSNumber numberWithInt:theInteger];

答案 3 :(得分:1)

如果您正在使用iOS,则可以将以下内容添加到segmentedcontrol

           [yourSegmentedControl addTarget:self action:@selector(valueChanged:) forControlEvents: UIControlEventValueChanged];

在valueChanged方法中,您更新UserDefaults。 请注意valueChanged之后的冒号。如果valueChanged没有参数,则不需要它。