我的tableview控制器上有一个段。
segmentIndex = 0 - > tableView加载 - >挖掘。导航到另一个tableViewController。 segmentIndex = 1 - > tableView加载 - >挖掘。导航到另一个tableViewController。
切换tableviews很好。问题是在导航回来后我需要记住以前的索引值。怎么实现呢?我目前的代码:
- 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;
}
}
}
先谢谢你们。
编辑:
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;
}
}
}
答案 0 :(得分:3)
您将值存储在viewWillDisappear
中,当您返回控制器viewWillAppear
时,您会将您存储的值设置为。那么你还可以做的是,首先将值设置为......让我们说-1。如果您的viewWillAppear
值为-1,则设置默认值,否则使用该值。
- (void)viewWillAppear:(BOOL)animated {
self.segment=[[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Nominals",@"Coinage",nil]];
[self.segment setFrame:CGRectMake(80, 0, 200, 30)];
[self.segment setSegmentedControlStyle:UISegmentedControlStyleBar];
if (self->_currentIndex == -1) {
NSInteger myDefaultValue = 0;
self.segment.selectedSegmentIndex=myDefaultValue;
} else {
self.segment.selectedSegmentIndex=self->_currentIndex;
}
[self.segment addTarget:self action:@selector(segmentValueChaged:) forControlEvents:UIControlEventValueChanged];
[[self navigationItem] setTitleView:self.segment];
}
当控制器即将消失时,您还必须存储该值。
- (void)viewWillDisappear:(BOOL)animated {
self->_currentIndex = self.segment.selectedSegmentIndex;
}
您在界面中定义NSInteger _currentIndex;
的位置
答案 1 :(得分:2)
您可以将索引值存储在 NSUserDefaults 中,稍后当您向后导航时,然后在 viewWillAppear 中,您可以从 NSUserDefaults 中检索整数值并根据检索的整数值生成选定或取消选择的索引。
例如:
-(IBAction)segmentValueChaged:(id)sender
{
switch (self.segment.selectedSegmentIndex)
{
case 0:
{
// --some code--
break;
}
case 1
{
//--some code--
break;
}
default:
break;
}
//现在在NSUserDefaults中保存所选索引,如下所示:
//获取共享默认值对象。
**NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];**
//保存索引。
**[settings setInteger:self.segment.selectedSegmentIndex forKey:@"MySelectedValueKey"];**
}
在你的viewWillAppear中你可以从NSUserDefaults获得价值;这是要选择的索引。
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
if([settings objectForKey:@"MySelectedValueKey"] == 0)
{
//Set up for index 0
}
if([settings objectForKey:@"MySelectedValueKey"] == 1)
{
//Set up for index 1
}
乐意提供帮助:)