2012-02-26 10 views
-1

ユーザーがアプリケーションを終了するか、ビューを離れるときにイメージが保存されるように、セルのイメージ状態を保存しようとしています。私はおそらくNSUserDefaultsを考えている、何が最善の方法ですか?おかげさまで Objective-C、iOS SDK、UITableViewセルイメージを保存する方法チェックマーク

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
cell.selectionStyle = UITableViewCellSelectionStyleNone; 

if (cell.imageView.image == [UIImage imageNamed:@"checkboxfull.png"]){ 
    cell.imageView.image = [UIImage imageNamed:@"checkboxblank.png"]; 
}else if(cell.imageView.image == [UIImage imageNamed:@"checkboxblank.png"]) 

{ 
    cell.imageView.image = [UIImage imageNamed:@"checkboxfull.png"]; 
    // [alert show]; 
} 
} 

答えて

1

私はおそらくNSUserDefaultsをいくつか使っていますが、私はそれらを個別に保存しません。私はおそらく配列内の各セルを格納します。複数のセルを保存するのがはるかに簡単になります。

NSMutableArray *checkState = [[NSArray alloc] init]; 
if([cell.imageView.image highlighted]) { 
    [checkState addObject:[NSNumber numberWithBool:YES]]; 
} else 
    [checkState addObject:[NSNumber numberWithBool:NO]]; 

Then when you load your table: 
NSArray cellState = [NSUserDefaults standardDefaults] objectForKey:@"yourSavedKey"]; 
[cell.imageView.image setHighlighted:[cellState objectAtIndex:indexPath.row]]; 
+0

私は見るので、チェック状態をインデックスに選択された行に入れましたか?残りの部分は見える?しかし、いつ私はデフォルトを呼びますか? – franklinexpress

+0

私はそれをプロパティに入れ、viewDidLoadでそれを埋めることができます。 –

3

それは本当にあなたがの内容を保存しようとしていることを持っているどのように多くの細胞に依存します:

は現在、私は、これは持っています。 NSUserDefaultsで行うのはそれほど大したことではありませんが、それ以上のことがあれば、おそらくコアデータがより良い解決策になるでしょう。

NSUserDefaultsを使用する場合は、チェックボックスのオン/オフ(2つの状態しかないため)を示すBOOLを設定することをお勧めします。だから:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"someUniqueIdentifier"]; 

これが役に立ちます。

+0

NSUserDefaultsをどのように使用するのか、またはNSUserDefaultsを上に置いたのですか? if文では?テーブルセルはユーザーによって追加または削除され、それはうまく動作します。イメージ部分だけを保存する方法がわかりません – franklinexpress

+0

追加または削除されていない静的なセルの場合はうまく動作します。あなたのユーザーが追加と削除を行っているので、私はCoreDataを使うことを提案します。こうすることで、各セルごとに独自のエンティティ(クラス)を作成し、必要なだけ少数のデータを格納することができます。 – Jamie

関連する問題