0

私は Storybord で作業しており、チェックボックス ボタンのあるテーブルビューを取得しました。

そして、チェックボックスボタンの状態を保存するために NSUserDefaults を使用しています。コアデータで保存しようとしましたが、方法がわからないので、簡単な方法 NSUserDefaults に移動することをお勧めします。

チェックボックスボタンはうまく機能していますが、問題はチェックボックスボタンの状態を保存しません!!!

アプリを閉じてもう一度開くと、保存されていません。

この問題を解決するために最善を尽くしましたが、うまくいきませんでした

ここに私のコードがあります

@property (strong, nonatomic) IBOutlet UIButton *myButton;

@property (nonatomic,assign) BOOL checked;


  @synthesize myButton,checked;


 - (void)viewDidLoad
{
[super viewDidLoad];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
checked = [defaults boolForKey:@"boxIsChecked"];
[defaults synchronize];
[self checkTheBox];

}

   - (UITableViewCell *)tableView:(UITableView *)tableView 
    cellForRowAtIndexPath:(NSIndexPath  *)indexPath
    {
   static NSString *CellIdentifier = @"Cell";
  UITableViewCell *cell = 
  [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

// Configure the cell...
NSManagedObject *device = [self.Work objectAtIndex:indexPath.row];

[cell.textLabel setText= [Work valueForKey:@"name"]



myButton = [UIButton buttonWithType:UIButtonTypeCustom] ;
[myButton setFrame:CGRectMake(260,2,40,40)];
myButton.tag = indexPath.row;
[myButton setImage:[UIImage imageNamed:@"checkBox.png"] forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(ButtonCheckMark:) 
forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:myButton];
cell.selectionStyle = UITableViewCellSelectionStyleNone;


return cell;
}


- (IBAction)ButtonCheckMark:(id)sender {

myButton = (UIButton *)sender;
NSLog(@"playButton %li" , (long)myButton.tag);

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

if (!checked) {
    [myButton setImage:
    [UIImage imageNamed:@"checkBoxMarked.png"]  forState:UIControlStateNormal];
    checked = YES;
    [defaults setBool:checked forKey:@"boxIsChecked"];
}

else if (checked) {
    [myButton setImage:
   [UIImage imageNamed:@"checkBox.png"] forState:UIControlStateNormal];
    checked = NO;
    [defaults setBool:checked forKey:@"boxIsChecked"];
  }

[defaults synchronize];

   }
 - (void) checkTheBox {
if (!checked) {
    [myButton setImage:
  [UIImage imageNamed:@"checkBox.png"]   forState:UIControlStateNormal];
   }

else if (checked) {

    [myButton setImage:
  [UIImage imageNamed:@"checkBoxMarked.png"]   forState:UIControlStateNormal];
   }
   }
4

0 に答える 0