如何在从一个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抱歉,但我想在应用程序终止后恢复主状态电离