2009-10-06 15 views
14

Was wäre die beste Methode, um alle Zellen in der Tabelle (UITableView) auszuwählen, wenn der Benutzer eine Schaltfläche in der Symbolleiste drückt?Wählen Sie alle Zellen in UITableView

+0

Was für das Ihr Anwendungsfall ist? Wenn Sie versuchen, eine Tabellenzeilenauswahl beizubehalten, beachten Sie, dass Sie im App Store abgelehnt werden, wenn Sie dies tun. –

Antwort

8

Sie können eine Zelle Aufruf der Tabellenansicht der selectRowAtIndexPath Methode wählen:

[menuTable selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop]; 

jedoch mehrere Zellen in einem UITableView nicht auswählen kann. Wenn Sie den Status von Zellen anzeigen und verarbeiten möchten, sollten Sie die Zelle mit der Zubehöransicht mit dem Typ UITableViewCellAccessoryCheckmark verwenden. (Siehe Dokumentation für weitere Details)

+1

Sie können mehrere Zellen auswählen, wenn die Tabellenansicht multipleSelection erlaubt. – titaniumdecoy

+1

@titaniumdecoy, Sie haben Recht. Leider war diese Funktionalität 2009 nicht verfügbar. – Vladimir

+0

Denken Sie daran, 'UITableViewScrollPosition' auf' .None' zu ​​setzen. –

3

habe es selbst nicht ausprobiert, aber versuchen, diese:

In Ihrer Schaltfläche Aktion, Schleife durch die indexPath und es nennt:

for (i = 0; i < [tableView numberOfSections]; i++) { 
    for (j = 0; j < [tableView numberOfRowsInSection:i]; j++) { 
     indexPath.row = j; 
     indexPath.section = i; 
     [tableView selectRowAtIndexPath:indexPath animated:animated scrollPosition:scrollPosition]; 
    } 
} 
+0

Wenn Sie jede neue Zelle auswählen - Auswahl aus dem vorherigen entfernt. Sie können nicht mehrere Auswahl in UITableView erhalten scheint es – Vladimir

+0

Ich frage mich, ob Sie die Abwahl in der Tabelle anzeigen können: WillDeselectRowAtIndexPath: Delegate-Methode. (Geben Sie nil zurück, wenn die Zeile nicht abgewählt werden soll.) – mahboudz

+0

Ich arbeite nicht für beides. Jedenfalls ist der Hauptpunkt (imo, aber kann einen genauen Ort in HIG nicht finden) nur, dass Sie nicht mehr als eine Zelle gleichzeitig auswählen sollten und der Auswahlstatus nicht persistent sein soll - Sie wählen die Tabellenzelle aus, um etwas zu tun. Sie sollten die Access-Ansicht der Zelle zum Ändern/Anzeigen des Zellenstatus verwenden. – Vladimir

29

Hier ist meine Methode um einen Tisch zu überqueren, funktioniert es gut.

for (int i = 0; i < [ptableView numberOfSections]; i++) { 
    for (int j = 0; j < [ptableView numberOfRowsInSection:i]; j++) { 
     NSUInteger ints[2] = {i,j}; 
     NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:ints length:2]; 
      UITableViewCell *cell = [ptableView cellForRowAtIndexPath:indexPath]; 
      //Here is your code 

    } 
} 
19

Dies kann alle Zeilen in der Tabellenansicht wählen:

for (NSInteger s = 0; s < self.tableView.numberOfSections; s++) { 
     for (NSInteger r = 0; r < [self.tableView numberOfRowsInSection:s]; r++) { 
      [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:r inSection:s] 
             animated:NO 
            scrollPosition:UITableViewScrollPositionNone]; 
     } 
    } 
Verwandte Themen