-1

こんにちは私はxcodeを初めて使用し、問題に対する答えを探していました。テーブルビューがあり、タスクリストのようにチェックマークを設定しています。ビューからビューに移動するときに、タスクリストにチェックマークを保存する方法を知りたいです。現在、アプリで別のビューに移動すると、テーブルビューコントローラーに戻ると消えてしまいます。コアデータを設定しておらず、プレイリストを使用していません。ここでのコードは単純です:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{  
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    if (cell.accessoryType == UITableViewCellAccessoryNone) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    } else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }
} 

テーブルビューに戻ったときに、これを保存する簡単なコードがあるかどうかを確認してください。

4

2 に答える 2

0

アプリの再起動間でチェックマークの状態を保持したい場合、最善の解決策はCore Dataを使用するようです。最初はやろうとしていることに対して少しやり過ぎに見えるかもしれませんが、アプリがさらに増えると間違いなく報われるでしょう。高度。すでに、さらに構築できる堅固なデータ管理システムがあります。
この場合、おそらくタスクを表すエンティティを作成する必要があります。最も単純なケースでは、NSString名前とBOOLisCompletedの2つのプロパティのみが必要です。もちろん、これはすべて単純なXMLを使用して可能ですが、最初からCoreDataを使用する方が将来性があります。

Core Dataの詳細については、こちらをご覧ください。 http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/CoreData/cdProgrammingGuide.html

于 2013-03-12T20:01:34.903 に答える
0

私はカスタムチェックボックスを取り、cellForRowAtIndexPathに次のように記述しました。

       static NSString *CustomCellIdentifier = @"CustomCell";

       ReportAttendedBy *cell = (ReportAttendedBy *)[tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier];

        if (cell == nil)
        {
            NSArray *nib;
            nib = [[NSBundle mainBundle] loadNibNamed:@"ReportAttendedBy" owner:self options:nil];
            for(id oneObject in nib)
                if([oneObject isKindOfClass:[ReportAttendedBy class]])
                    cell = (ReportAttendedBy *)oneObject;
        }

        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
        cell.textLabel.font= [UIFont fontWithName:@"Arial Rounded MT Bold" size:15.0];
        cell.textLabel.textColor=[UIColor whiteColor];

        ReportCreateOrView *repVw= [arrAttendedBy objectAtIndex:indexPath.row];
        cell.txtCustName.text = repVw.strCustomer;
        cell.txtCustName.tag = indexPath.row + 100;
        cell.txtCustName.delegate = self;
        [cell.txtCustName addTarget:self action:@selector(goAway:) forControlEvents:UIControlEventEditingDidEndOnExit];

        [cell.btnCheckBox addTarget:self action:@selector(checkboxClicked:) forControlEvents:UIControlEventTouchUpInside];
        cell.btnCheckBox.tag = indexPath.row + 5000;

        NSLog(@"repVw.strSelected=== %@",repVw.strSelected);

        if([repVw.strSelected isEqualToString:@"1"])
        {
            [cell.btnCheckBox.currentBackgroundImage isEqual:[UIImage imageNamed:@"ckeckbox_checked.png"]];

          //  cell.txtCustName.userInteractionEnabled = true;
        }
        else
        {
            [cell.btnCheckBox.currentBackgroundImage isEqual:[UIImage imageNamed:@"ckeckbox_unchecked.png"]];
            //cell.txtCustName.userInteractionEnabled = false;
        }

        return cell;

そして、checkboxClickedメソッドでチェックボックスの値を1と0に維持し、ボタンの画像を変更しています

    -(IBAction)checkboxClicked:(id)sender
    {
        NSLog(@"tag=== %d",[sender tag] - 5000);

        int index= [sender tag] - 5000;
        UIButton *btn= (UIButton *)sender;

        ReportCreateOrView *repObj= [arrAttendedBy objectAtIndex:index];

        if([btn.currentBackgroundImage isEqual:[UIImage imageNamed:@"checkbox_unchecked.png"]])
        {
            [btn setBackgroundImage:[UIImage imageNamed: @"checkbox_checked.png"] forState:UIControlStateNormal];
            selCustId = [repObj.strCustId intValue];
            val = 1;
            [self updateAttendedBy]; //in this method i've written query to update value in table

        }
        else if([btn.currentBackgroundImage isEqual:[UIImage imageNamed:@"checkbox_checked.png"]])
        {
            [btn setBackgroundImage:[UIImage imageNamed: @"checkbox_unchecked.png"] forState:UIControlStateNormal];
            selCustId = [repObj.strCustId intValue];
            val= 0;
            [self updateAttendedBy];
        }
   }

そして、viewWillAppearでgetvaluesへのメソッドを書くことを忘れないでください。:)

于 2013-03-13T05:48:24.040 に答える