如何在从一个ViewController导航到另一个ios后保持复选框状态
我有一个表视图,我将按钮作为复选框放置在表视图上,现在我想保持复选框的状态。我的问题是,当我从一个视图控制器导航到另一个视图控制器或终止应用程序时,所有复选框都未选中,这是以前选中的。任何值得注意的建议如何在从一个ViewController导航到另一个ios后保持复选框状态,ios,iphone,xcode,cocoa-touch,Ios,Iphone,Xcode,Cocoa Touch,我有一个表视图,我将按钮作为复选框放置在表视图上,现在我想保持复选框的状态。我的问题是,当我从一个视图控制器导航到另一个视图控制器或终止应用程序时,所有复选框都未选中,这是以前选中的。任何值得注意的建议 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *str=[NSString stringWithForma
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *str=[NSString stringWithFormat:@"identfier%d",indexPath.row];
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:str];
UILabel *lblValue;
if (cell==nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:str];
lblValue=[[UILabel alloc]init ];
lblValue.tag=indexPath.row+20000;
btnValue=[UIButton buttonWithType:UIButtonTypeRoundedRect];
btnValue.tag=indexPath.row+100;
}else{
lblValue=(UILabel*)[cell.contentView viewWithTag:indexPath.row+20000];
btnValue=(UIButton*)[cell.contentView viewWithTag:indexPath.row+100];
}
lblValue.backgroundColor=[UIColor clearColor];
lblValue.text=[[sortedArray objectAtIndex:indexPath.row]valueForKey:@"CategoryName"];
//lblValue.text=@"some value";
UIImage *buttonImage = [UIImage imageNamed:@"radiou.png"];
UIImage *buttonImage1=[UIImage imageNamed:@"radioc.png"];
[btnValue setBackgroundImage:buttonImage forState:UIControlStateNormal];
[btnValue setBackgroundImage:buttonImage1 forState:UIControlStateSelected];
[btnValue addTarget:self action:@selector(checkedButton:) forControlEvents:UIControlEventTouchUpInside];
btnValue.frame=CGRectMake(10, 15, 25, 25);
if([self.navigationItem.rightBarButtonItem.title isEqual:@"Done"]){
[UITableView animateWithDuration:0.3f delay:0.1f options:UIViewAnimationOptionCurveEaseInOut animations:^{
lblValue.frame=CGRectMake(35+25, 17, 200, 20);
btnValue.hidden=NO;
} completion:nil];
}
else
{
[UITableView animateWithDuration:0.3f delay:0.1f options:UIViewAnimationOptionCurveEaseInOut animations:^{
lblValue.frame=CGRectMake(35, 17, 200, 20);
btnValue.hidden=YES;
} completion:nil];
}
[cell.contentView addSubview:btnValue];
[cell.contentView addSubview:lblValue];
return cell;
}
如果要在ViewController中保留状态而不保存状态并将其加载到永久性存储,则应使ViewController成为其父ViewController的属性 这样,当你离开它们时,它们就不会被释放
您还必须记住只允许alloc和init它们一次。为此,您可以创建一个包含复选框值的NSArray。现在,当调用ViewWillDissDisplay时,您可以将此数组保存在NSUserDefaults中,在ViewWillDisplay中,您可以从NSUserDefaults中检索数组和,并相应地在复选框中设置值 假设表中有10行,则可以创建一个计数为10的数组。现在,若选中了第4行和第5行的复选框,那个么您可以将1放在索引3和4处,其余的索引应该是0
int arrayCount = 10;//enter number of rows you have
NSMutableArray *checkStatusArray = [[NSMutableArray alloc]init];
for (int i=0; i<arrayCount; i++)
{
if([[checkBoxStatusArray objectAtIndex: i]integerValue] == 1)
// Above mentioned array should be made prior to this method from which checkbox will be loaded or you can make 0 entries here for every indexInitially
{
[checkStatusArray addObject:[NSString stringWithFormat:@"1"]];
}
else
{
[checkStatusArray addObject:[NSString stringWithFormat:@"0"]];
}
}
// To put value
[[NSUserDefaults standardUserDefaults]setObject:checkStatusArray forKey:@"statusArray"];
// Now to fetch value
NSArray *valuesArray = [[NSUserDefaults standardUserDefaults]objectForKey: @"statusArray"];
int-arrayCount=10//输入您拥有的行数
NSMutableArray*checkStatusArray=[[NSMutableArray alloc]init];
对于(int i=0;iNote:viewDidUnload
在iOS 6.0中不推荐使用。在内存不足的情况下不再清除视图,因此永远不会调用此方法。您的意思是通过标记我必须存储复选框的values@Ashutosh-如果你有时间,你能为这个写一些逻辑吗?检查编辑,我刚刚在这里输入了代码,所以请e如果出现格式错误,请解决。此数组将在viewdidload中生成,每个索引处都有0,并且应在复选框ie的每个操作后更新。如果选中索引2处的复选框,则数组的第二个索引应变为1i。我希望将其设置为“一次选定”,并始终保持不变。您的意思是,即使应用程序终止时也是如此吗?在这种情况下,您必须使用NSUserDefaults或实现NSCoding协议。您应该恢复CellForRowatineXpath中的按钮选中状态,因为在重新加载表按钮后,默认情况下会取消选中。因此,您需要一个数据结构来存储按钮状态。@vokilam抱歉,但我想在应用程序终止后恢复主状态电离