0

我是 Xcode 的大初学者,在构建我的应用程序时遇到了问题。我的应用由 UILabel、UIPickerView 和 UISegmentControl 组成。每次用户更改 UIPickerView 中的选定行时,我希望我的应用程序在 UILabel 中显示不同的值。起初我只有一组值要显示在 UILabel 中,但最终添加了第二组。我添加了 UISegmentControl 以便用户能够在这两组之间切换。这是我的“if语句”的一个例子

- (void)pickerView: (UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

if (row == 0 && segmentController.selectedSegmentIndex == 0) {


    pickLabel.text=@"100 PPM";
}

else if (row == 0 && segmentController.selectedSegmentIndex == 1) {


    pickLabel.text=@"110 PPM";
}

else if (row == 1 && segmentController.selectedSegmentIndex == 0) {


    pickLabel.text=@"95 PPM";
}

else if (row == 1 && segmentController.selectedSegmentIndex == 1) {


    pickLabel.text=@"105 PPM";
}

问题在于,UILabel 中的值仅在 UIPickerView 中的选定行发生更改时发生更改,而不是在段控件更改时更改。例如,当我更改段控制索引时,UILabel 不会更改,直到我切换到 UIPicker 中的不同行。我想做一个 IBAction,当段控制索引改变时强制 UILabel 改变。比我将我的 IBAction 连接到 UISegmentControl 与“值更改”。我需要一些代码来放入 IBAction。请帮忙!

4

2 回答 2

0

您还应该为 UISegmentedControl 注册一个事件。

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

现在创建一个方法,如:

-(void) valueChanged:(UISegmetedControl *)control
{
    [self modifyLabel];
}

- (void)pickerView: (UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    [self modifyLabel];
}

-(void) modifyLabel
{
//Based on picker and segmented controller, update the label
}   
于 2013-06-20T09:03:30.443 回答
0
- (void)pickerView: (UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

当您单独更改选择器值时执行。更改段时,您必须调用一个方法并在此方法中执行相同的操作

尝试这个

宣布

NSInteger selectedRowInpicker;

并使用

-(IBAction)valueChanged
{
    if (selectedRowInpicker == 0 && segmentController.selectedSegmentIndex == 0) {


        pickLabel.text=@"100 PPM";
    }

    else if (selectedRowInpicker == 0 && segmentController.selectedSegmentIndex == 1) {


        pickLabel.text=@"110 PPM";
    }

    else if (selectedRowInpicker == 1 && segmentController.selectedSegmentIndex == 0) {


        pickLabel.text=@"95 PPM";
    }

    else if (selectedRowInpicker == 1 && segmentController.selectedSegmentIndex == 1) {


        pickLabel.text=@"105 PPM";
    }
}


- (void)pickerView: (UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    selectedRowInpicker =row;
    [self valueChanged];
}

将 valueChanged 连接到段操作“value changed”

于 2013-06-20T09:05:08.257 回答