2011-05-31 101 views
4

我试图从分段控件接收用户选择,然后将其保存到NSUserDefaults,即,如果第一个段被选中,那么它将int“1”保存到NSUserDefaults中,但如果第二个段被选中,那么它将int“2”保存到NSUserDefaults中。如何接收来自分段控件的输入

+0

它的iOS所以绑定的替代方法是什么? – 2011-06-01 03:21:18

回答

3

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

编辑即可添加:我看到您没有指定Mac或iOS。如果是Mac,绑定无疑是最简单的方法,而绑定在iOS上不可用。

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

+0

好的。所以我测试了一切,我发现的是我的问题其实就是这样。我有2个视图,主视图和flipSideView。一个视图只需要从nsuserdocuments读取,而另一个需要读取和写入,但在我的代码中,我分配了两个相同名称的nsuser文档; 1为每个视图,这是不正确的。那么如何在一个中分配它并在另一个中连接呢? – 2011-06-01 01:00:32

+0

这听起来像你现在有一个问题,与你原来的问题没有任何关系,所以我认为你应该发布一个新的问题。 – JWWalker 2011-06-01 05:24:30

1

不要听上面的人。首先你应该知道的是,UISegmentedControl从0开始,所以第一个是0,第二个是1,第三个是2,等等。 如果你想从0开始,只需要在你的整数获得价值。 (看下面) 要更改它的值时,挂钩一个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]; 
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

如果您正在使用iOS的工作,你可以按照添加到segmentedcontrol

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

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