【问题标题】:How to receive input from a segmented control如何接收来自分段控件的输入
【发布时间】:2014-02-14 01:11:10
【问题描述】:

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

【问题讨论】:

  • 它的 iOS 那么绑定的替代方法是什么?

标签: cocoa-touch ios nsuserdefaults uisegmentedcontrol


【解决方案1】:
- (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");
    }
}

【讨论】:

    【解决方案2】:

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

    编辑添加:我看到您没有指定 Mac 或 iOS。如果是 Mac,绑定肯定是最简单的方法,而 iOS 上没有绑定。

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

    【讨论】:

    • 好的。所以我测试了一切,我发现我的问题实际上是这个。我有 2 个视图,主视图和 FlipSideView。一个视图只需要从 nsuserdocuments 中读取,而另一个需要从中读取和写入,但在我的代码中,我分配了 2 个相同名称的单独 nsuserdocuments;每个视图 1 个,这是不对的。那么如何在一个中分配它并在另一个中连接它呢?
    • 听起来你现在有一个问题与你原来的问题没有任何关系,所以我认为你应该发布一个新问题。
    【解决方案3】:

    别听楼上的。你应该知道的第一件事是 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];
    

    【讨论】:

      【解决方案4】:

      如果您使用的是 iOS,您可以在分段控件中添加以下内容

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-21
        • 1970-01-01
        • 2021-01-14
        • 2015-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-10
        相关资源
        最近更新 更多