2012-03-28 11 views
0

Ich arbeite an einer App, in der ich den Status einiger Geräte ein-/ausschalten möchte, indem Sie die Bildansicht der Zelle ändern. Ich habe meine Geräte in einer Tabellenansicht und ich setze den Bearbeitungsmodus der Tabellenansicht auf einen Knopfklick und es ist in Ordnung, aber das Problem ist, dass es nur das Bild der Zellen ändert, die derzeit sichtbar sind, ob oder nicht Ich habe zuvor einige der Zeilen ausgewählt, die momentan nicht sichtbar sind. Hier ist mein Code. Sag mir, was ich vermisse oder was ich tun sollte, um die ausgewählten Zeilen zu ändern, die nicht sichtbar sind.Bearbeiten unsichtbare Zeilen für 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; 
} 

Antwort

1

(Ich gehe davon aus Sie eine Reihe von benutzerdefinierten Objekten oder Wörterbücher irgendwo haben, die die Informationen, um Ihre Zellen zu füllen gilt.)

Eine bessere Strategie, um Ihre setDevicesOn zu haben ist: Methode Update, das Modell Daten, die Sie angeben, welche Bild Ich möchte die reloadData aufrufen und, wenn sie fertig ist. Wenn cellForRowAtIndexPath: aufgerufen wird, können Sie das tatsächliche Bild der Zelle basierend auf diesem Datenelement festlegen.

+0

OK, also muss ich schneller tippen. :) –

+0

Ja ich denke das würde funktionieren – Hassam

2

Tabellenansichten verwalten keine Zellen für jede Zeile. Beim Scrollen werden die Zellen, die nicht sichtbar sind, recycelt und für die sichtbaren Zellen verwendet.

Der Status "Gerät an" jeder Zelle sollte nicht ausschließlich im Bild der Zelle gespeichert werden. Sie sollten ein Modellobjekt für jede Zeile (oder ein Array von Zuständen usw.) haben, das diesen Status beibehält. So können Sie in cellForRowAtIndexPath: eine Zelle richtig einrichten, die in Sicht kommt.

+0

Ja das ist die Sache, die ich vermisste. Danke viel – Hassam

Verwandte Themen