I have a segment on my tableview controller.
segmentIndex=0 -> tableView getting loaded -> tap. navigating to another tableViewController.
segmentIndex=1 -> tableView getting loaded -> tap. navigating to another tableViewController.
Switching tableviews happens fine. The problem is that after navigating back I need to remember the previous index value. How to implement it? My current code:
- viewWillAppear
self.segment=[[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Nominals",@"Coinage",nil]];
[self.segment setFrame:CGRectMake(80, 0, 200, 30)];
[self.segment setSegmentedControlStyle:UISegmentedControlStyleBar];
//self.segment.selectedSegmentIndex=0;
[self.segment addTarget:self action:@selector(segmentValueChaged:) forControlEvents:UIControlEventValueChanged];
[[self navigationItem] setTitleView:self.segment];
-(IBAction)segmentValueChaged:(id)sender
{
switch (self.segment.selectedSegmentIndex)
{
case 0:
{
DBAccess *access=[[DBAccess alloc]init];
self.items=[access returnNominals:self.subCountryID nk:fromPeriod];
[access closeDataBase];
self.tableView.hidden=NO;
[self.tableView reloadData];
self.segmentIndex=0;
break;
}
case 1:
{
DBAccess *access=[[DBAccess alloc]init];
self.coinageArr=[access returnCoinage:fromPeriod period:subCountryID];
self.tableView.hidden=NO;
[self.tableView reloadData];
self.segmentIndex=1;
break;
}
}
}
Thank you in advance guys.
EDIT:
self.segment=[[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Nominals",@"Coinage",nil]];
[self.segment setFrame:CGRectMake(80, 0, 200, 30)];
[self.segment setSegmentedControlStyle:UISegmentedControlStyleBar];
if(!self.segmentIndex)
{
self.segment.selectedSegmentIndex=-1;
}
else
{
self.segment.selectedSegmentIndex=self.segmentIndex;
}
//self.segment.selectedSegmentIndex=self.segmentIndex;
[self.segment addTarget:self action:@selector(segmentValueChaged:) forControlEvents:UIControlEventValueChanged];
[[self navigationItem] setTitleView:self.segment];
-(void)viewWillDisappear:(BOOL)animated
{
switch (self.segment.selectedSegmentIndex)
{
case 0:
{
self.segmentIndex=0;
break;
}
case 1:
{
self.segmentIndex=1;
break;
}
}
}
You store your value in
viewWillDisappearand when you come back to your controllerviewWillAppearyou set back the value you stored. So what you could also do is, start by setting the value to… let’s say -1. if in yourviewWillAppearvalue is -1, then you set your default value, else, you use that value.You also have to store the value when the controller is about to disappear.
Where you defined
NSInteger _currentIndex;in your interface