2012-02-26 25 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

我明白了,所以把檢查狀態放在索引處的select行中?其餘的在看?但是,我什麼時候調用默認值? – franklinexpress 2012-02-27 00:36:22

+0

我可能會把它放在一個屬性中,並將其填充到viewDidLoad中。 – 2012-02-27 13:07:19

3

這真的取決於你有多少細胞有你想保存的內容。如果是少數,在NSUserDefaults中做這件事並不是什麼大不了的事情,但如果更多的話,Core Data可能會是更好的解決方案。

如果您想使用NSUserDefaults,您可能需要在其中設置BOOL以指示覆選框是打開還是關閉(因爲您只有兩個狀態)。所以:

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

希望這會有所幫助。

+0

你可以舉一個例子,你會如何使用或者你是否會把NSUserDefaults放在上面?在if語句中?表格單元格被用戶添加或刪除,並且工作正常,只是圖像部分我不確定如何保存 – franklinexpress 2012-02-26 22:18:08

+0

如果它們是某些未添加或刪除的靜態單元格,它確實只能很好地工作。由於你的用戶正在添加和刪除,我建議使用CoreData。這樣,您可以爲每個單元格創建自己的實體(Class),並根據需要在其中存儲少量或多少數據。 – Jamie 2012-02-26 22:22:52