Reputation: 580
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
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