我是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。请帮忙!
答案 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连接到细分操作“值已更改”