2012-03-28 73 views
0

我正在開發一個應用程序,通過更改單元格的圖像視圖來打開/關閉某些設備的狀態。我有我的設備在一個表格視圖,我設置了表格視圖的編輯模式,點擊一個按鈕,它編輯得很好,但問題是它只改變當前可見的單元格的圖像,無論是否我以前選擇了一些現在不可見的行。這是我的代碼。告訴我我缺少什麼,或者我應該做些什麼來改變不可見的選定行。編輯UITableViewCells的不可見行

- (void)viewDidLoad{ 
deviceTableVIew.rowHeight = 72.0; 
[deviceTableVIew setAllowsSelectionDuringEditing:YES]; 
[deviceTableVIew setAllowsMultipleSelectionDuringEditing:YES]; 

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"mainBackground.jpg"]]; 
btnControl.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"btn-conrol.png"]]; 
[super viewDidLoad]; 
} 

-(IBAction)control:(id)sender{ 
btnControl.enabled = false; 
btnControl.hidden = true;   
btnCancel.enabled = true; 
btnCancel.hidden = false;  
stateToggleToolbar.hidden = false;  
[self.deviceTableVIew setEditing:YES animated:YES]; 
} 

-(IBAction)setDevicesOn:(id)sender{ 

NSArray *paths = [self.deviceTableVIew indexPathsForSelectedRows]; 
for (NSIndexPath *path in paths) { 
    UITableViewCell *cell = (UITableViewCell *)[self.deviceTableVIew cellForRowAtIndexPath:path]; 
    cell.imageView.image = [UIImage imageNamed:@"device-on-image.png"]; 
} 

controlStatus = NO;   
btnControl.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"btn-conrol.png"]];   
stateToggleToolbar.hidden = true; 
} 

回答

1

(我假設你有自定義對象或字典的數組的地方,保存的信息來填充你的細胞。)

一個更好的策略是讓你setDevicesOn:方法更新的數據模型來表示什麼樣的形象,你希望顯示,並在完成時調用reloadData。然後,當調用cellForRowAtIndexPath:時,可以根據該數據元素設置單元格的實際圖像。

+0

好吧,所以我需要輸入更快。 :) – 2012-03-28 14:04:23

+0

是的,我認爲這會奏效 – Hassam 2012-03-28 14:06:59

2

表視圖不保留每行的單元格。在您滾動時,細胞將從視圖中回收並用於細胞進入視野。

每個單元格的「device on」狀態不應單獨存儲在單元格的圖像中。你應該有一個模型對象,用於維護該狀態的每一行(或一組狀態等)。因此,在cellForRowAtIndexPath:中,您可以正確設置一個正在顯示的單元格。

+0

是的,這是我錯過的東西。非常感謝 – Hassam 2012-03-28 14:07:54

相關問題