【问题标题】:Multiple segmented controls多个分段控件
【发布时间】:2014-11-29 23:18:47
【问题描述】:

我需要实现两个分段控件。考虑到两个分段控件的索引,结果会有所不同。考虑到在第一个中,每个索引都有一个 int 固定数(不可变),而第二个控件有一个与每个索引关联的方程。我需要程序了解哪个是两个控件的组合(例如 I = 0 和 II = 1)。 我开发了这段代码,但对我不起作用。

if ((effortSegmented.selectedSegmentIndex ==0) && (styleSegmented.selectedSegmentIndex ==0)) {


        float weight_b = [weightTf.text floatValue];
        float totalCal = (((704*weight_b)/70.38) - 12);
        self.calL.text=[NSString stringWithFormat:@"~%.1f kcal", totalCal];


    } else if ((effortSegmented.selectedSegmentIndex==0) && (styleSegmented.selectedSegmentIndex==1)) {

        float weight_b = [weightTf.text floatValue];
        float totalCal = (((704*weight_b)/70.38)+32);
        self.calL.text=[NSString stringWithFormat:@"~%.1f kcal", totalCal];


    } else if ((effortSegmented.selectedSegmentIndex==0) && (styleSegmented.selectedSegmentIndex==2)) {

        float weight_b = [weightTf.text floatValue];
        float totalCal = (((704*weight_b)/70.38)+51);
        self.calL.text=[NSString stringWithFormat:@"~%.1f kcal", totalCal];

    }

如您所见,[-12, 32, 51] 是与第一个控制索引关联的固定 int。即使我更改控制索引一,运行程序也不会导致标签发生任何变化。不知道去哪里找。

PS 我不能声明标签,因为在

-(void)awakefornib {
[segControl setSegmentedCount:3]
}

我看不到 setSegmentedCount。不在列表中。

谢谢

【问题讨论】:

    标签: ios objective-c xcode uisegmentedcontrol


    【解决方案1】:

    为您的分段控件设置标签属性,并使用它来识别哪个事件属于哪个分段控件。

    - (void)awakeFromNib
    {
        [segControl setSegmentCount:3];
        [[segControl cell] setTag:0 forSegment:0];
        [[segControl cell] setTag:1 forSegment:1];
        [[segControl cell] setTag:2 forSegment:2];
    
    }
    

    或用于段控制

    self.mySegmentedControl.tag = 1;
    

    【讨论】:

    • 您可以按照 Apple 文档中的说明进行操作。编辑了答案
    • 我看到了文档,当我创建 -(void)awakefornib: { [segControl setSegmentedCount:3] 我没有 setSegmentedCount。因此我无法创建标签。
    【解决方案2】:

    你可以在你声明的地方或在你的这个方法调用之前设置标签:

    effortSegmented.tag=1;
    styleSegmented.tag =2;
    

    【讨论】:

    • 我需要在单元格上添加标签。这样我将标记整个控件。
    【解决方案3】:

    我是这样解决的,因为我还是不明白怎么做标签。

    - (IBAction)switchValue:(id)sender {
    
    
    double teta = effortSegmented.selectedSegmentIndex;
    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
    [def setDouble:teta forKey:@"index"];
    [def synchronize];
    
    
    
    }
    

    我将索引的值设置为变量。存储它。我是在与之前不起作用的分段控件相关的操作中完成的(数字 1)。

    然后我以这种方式在按钮操作中获得了变量:

    - (IBAction)click_on:(id)sender {
    
    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
    double gamma = [def integerForKey:@"index"];
    int delta = gamma*50;
    

    我调用了变量并在 if 语句中使用它。

    if (styleSegmented.selectedSegmentIndex ==0) {
    
            float weight_b = [weightTf.text floatValue];
            float totalCal = ((704*weight_b)/70.38)+delta;
            self.calL.text=[NSString stringWithFormat:@"~%.1f kcal", totalCal];
    
    
    }
    

    为了获得变量的固定值,我将索引乘以一个常量。结果是一个介于 0 和常数之间的数字。 这是我找到的最好方法。我知道不正确,但希望对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-01
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 2021-09-02
      相关资源
      最近更新 更多