sharon
sharon

Reputation: 580

Segment control not getting selected or highlighted

ViewDidLoad

v1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
v2= [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];

// then i add componants to both these views.

for v1, i add several textfileds, and button for v2, i add several labels, and a image

and in the same viewDidLoad method i add a segment controller to the navigationcontroller;

segment = [[UISegmentedControl alloc] initWithFrame:CGRectMake(x,y, height,width)];           
segment .segmentedControlStyle = UISegmentedControlStylePlain;
[segment insertSegmentWithTitle:@"first" atIndex:0 animated:NO];
[segment insertSegmentWithTitle:@"second" atIndex:1 animated:NO];
[segment setSelectedSegmentIndex:0];
segment .momentary = YES;
[segment addTarget:self action:@selector(segmentclicked:) forControlEvents:UIControlEventValueChanged];
segmentControllerView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 300.0, 50.0)];
segmentControllerView .autoresizingMask = 0;
[segmentControllerView  addSubview:segment ];
self.navigationItem.titleView = segmentControllerView ;

Now in the ;

-(void)segmentclicked:(id)sender {
if ((((UISegmentedControl *)sender).selectedSegmentIndex) == 0 ) {
    [v1 setHidden:YES];
    [v2 setHidden:NO];

    [self.view addSubview:self.v1];
    [loginSignupSegment setSelectedSegmentIndex:0]; <<<<<<<<<
    [segment addSubview:segment];
    self.navigationItem.titleView = segmentControllerView;
} else {
    //toggle the correct view to be visible
    [v2 setHidden:YES];
    [v1 setHidden:NO];     

    [self.view addSubview:self.v2];
    [segment setSelectedSegmentIndex:1]; <<<<<<<<<<<<<<<<
    [segmentControllerView addSubview:segment];
    self.navigationItem.titleView = segmentControllerView;
}}

What hapence is that when i switch views, i don't get the segment respected to the view highlighted (I have done it in the code but its not showing off) - see the <<<<<<< in the code.

How can i solve this ?

Upvotes: 0

Views: 763

Answers (1)

Simone Pistecchia
Simone Pistecchia

Reputation: 2840

i do not think your code is the best way to do this. But i do not know all the project. For solve it remove

segment.momentary = YES;

and replace -(void)segmentclicked:(id)sender with:

-(void)segmentclicked:(id)sender {
    if ((((UISegmentedControl *)sender).selectedSegmentIndex) == 0 ) {
        [v1 setHidden:YES];
        [v2 setHidden:NO];

        [self.view addSubview:v1];
        [segment setSelectedSegmentIndex:0];
    } else {
        //toggle the correct view to be visible
        [v2 setHidden:YES];
        [v1 setHidden:NO];     

        [self.view addSubview:v2];
        [segment setSelectedSegmentIndex:1];
}

}

hope this help you.

Upvotes: 1

Related Questions