2012-03-28 6 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

OK、私は速く入力する必要があります。 :) –

+0

はいこれはうまくいくと思います – Hassam

2

テーブルビューでは、すべての行に対してセルが維持されません。スクロールすると、見えなくなるセルはリサイクルされ、表示されるセルに使用されます。

各セルの「デバイスオン」状態は、セルの画像内にのみ保存すべきではありません。その状態を維持する各行(または状態の配列など)のモデルオブジェクトが必要です。したがって、cellForRowAtIndexPath:では、表示されているセルを適切に設定することができます。

+0

はい、それは私が行方不明だったことです。ありがとうalot – Hassam

関連する問題