I am a big beginner in Xcode and have encountered a problem while building my app. My app consists of an UILabel, UIPickerView and UISegmentControl. I wanted my app to show a different value in UILabel every time the user changes the selected row in UIPickerView. At first I only had one set of values to show in UILabel but eventually added a second set. I added UISegmentControl in order for the user to be able to switch between these two sets. Here is an example of my "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";
}
The problem is that the value in UILabel only changes when the selected row in UIPickerView is changed and not when the segment control is changed. For an example when I change the segment control index, UILabel does not change until I switch to a different row in the UIPicker. I want to make an IBAction that forces the UILabel to change when the segment control index is changed. Than I will connect my IBAction to the UISegmentControl with "value changed". I need some code to put into the IBAction. Please help!
- (void)pickerView: (UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
get executed when you change the picker value alone .When changing the segment you have to invoke a method and do the same here in this method
Try this
declare
NSInteger selectedRowInpicker;
and use
-(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];
}
connect the valueChanged to the segment action "value changed"