0

Hi i am trying to change label text when changing segmented control.

Here's the code:

#import "FirstViewController.h"

@interface FirstViewController ()

@end

@implementation FirstViewController
@synthesize segmentedControl;
@synthesize distTf;
@synthesize weightLabel;
@synthesize spaceLabel;


- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.


if(segmentedControl.selectedSegmentIndex==0) {

    weightLabel.text = @"Yards";
    spaceLabel.text = @"Pounds";

} else if(segmentedControl.selectedSegmentIndex==1){

    weightLabel.text = @"Meters";
    spaceLabel.text = @"Kilograms";

}

}

- (void)didReceiveMemoryWarning {
     [super didReceiveMemoryWarning];
     // Dispose of any resources that can be recreated.
}

@end

It starts well when index = 0 but won't change if i select index = 1. Can you see what i can't?

Thanks all

MrKinisia
  • 35
  • 5

2 Answers2

1

Yes. We can see that your code to change labels executed only once, when the view is loaded and that's it. You don't actually have a code tied to the changes in segmented control.

This code:

if(segmentedControl.selectedSegmentIndex==0) {

    weightLabel.text = @"Yards";
    spaceLabel.text = @"Pounds";

} else if(segmentedControl.selectedSegmentIndex==1){

    weightLabel.text = @"Meters";
    spaceLabel.text = @"Kilograms";

}

Should be put inside change value handler for segmented control.

sha
  • 17,824
  • 5
  • 63
  • 98
1

Connect your UISegment control for action event "valuechanged" and write following method for change label text as user changes his/her Selection.

- (IBAction)segment_Changed:(id)sender{

UISegmentedControl * segment = (UISegmentedControl *)sender;

if(segment.selectedSegmentIndex == 0){

    weightLabel.text = @"Yards";
    spaceLabel.text = @"Pounds";

}else if (segment.selectedSegmentIndex == 1){

    weightLabel.text = @"Meters";
    spaceLabel.text = @"Kilograms";
}}
Abhishek Sharma
  • 3,283
  • 1
  • 13
  • 22