UISegmentControl不会刷新连接到UIPickerView的UILabel

时间:2013-06-20 08:58:34

标签: ios uilabel uipickerview uisegmentedcontrol uipicker

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

的一个例子
- (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并更改“value”。 我需要一些代码放入IBAction。请帮忙!

2 个答案:

答案 0 :(得分: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
}   

答案 1 :(得分: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连接到细分操作“值已更改”