2009-10-10 20 views
21

Ich bin vor einem Problem kann ich nicht ... Ich habe eine gruppierte Tabelle, deren Abschnitt Kopf- und Fußzeile Abschnitt lösen richtig beim Start dankÄndern UITableView Abschnitt Kopfzeile/Fußzeile Während der Ausführung der App?

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 

und

- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section 

Doch angezeigt bekommen, Ich kann mir nicht vorstellen, wie ich sie später aktualisieren kann, ich weiß nicht, wie ich diese Texte ändern soll, und es ist ziemlich frustrierend, weil es meiner Meinung nach nichts Schwierigeres sein muss, als ein Text-Label zu ändern ... (einige ". Text "Eigenschaft ...)

Ich suchte die ganze Dokumentation ohne Glück ...

Jede Hilfe ist hoch & freundlich geschätzt! Grüße, Enrico

+0

Gibt es eine Möglichkeit, die Kopf-/Fußzeilen ohne Nachladen die vollständige Tabelle zu aktualisieren, ... oder die ganze Sektion? Update * JUST * die Kopf-/Fußzeilen. – Patricia

+0

Ich glaube nicht, dass die Aktualisierung nur eines Teils der Tabellenansicht Ihnen etwas bringt oder Sie einen Unterschied in der Leistung sehen. –

Antwort

25

Im Delegatmethode, einen Methodenaufruf hinzufügen, die den Abschnittsnamen zurückgibt, zB:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    switch (section) { 
     case firstSectionTag: 
      return [self firstSectionTitle]; 
     case secondSectionTag: 
      return [self secondSectionTitle]; 
     // ... 
     default: 
      return nil; 
    } 
} 

- (NSString *)firstSectionTitle { 
    // generate first section title programmatically, e.g. "return [[NSDate date] description];" 
} 

// ... 

Dann, wenn Sie den Abschnitt Titel aktualisieren müssen, eine NSNotification senden, die etwas auslöst wie die folgende Methode:

- (void)refreshTableSectionTitles:(NSNotification *)notification { 
    [tableView reloadData]; 
} 

Wenn die Tabelle groß ist und Sie eine feinere Kontrolle wollen, eine NSNotification mit einem NSDictionary übergeben, die den Abschnitt, den Sie laden möchten enthält, Lesen Sie das Wörterbuch in -refreshTableSectionTitles, um den Abschnitt NSInteger zurückzurufen, und verwenden Sie die Tabelle -reloadSections:withRowAnimation:, um diesen spezifischen Abschnitt neu zu laden.

7

können Sie verwenden:

-(void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation 

Und in

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 

Ihren neuen Kopftext in Anweisung definieren.

Dies wird eine nette Animation beim Ändern der Kopf-/Fußzeile machen.

4

Verwenden Sie diese Zeile im Code, wo Sie den Titel ändern mögen:

[[self theTableViewToChangeItsHeader]reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade]; 
+1

auf iOS 7 dies bewirkt, dass die Zellen in der Sektion verschwinden. – malhal

+0

Diese Frage wurde mit IOS 5.1 in Verbindung gebracht. Hast du es ernsthaft abgelehnt? : D –

-4

in Ihrer Tableviewcontroller Verwendung

[self.tableView reloadSectionIndexTitles]; 
+0

Fußtext wird nicht erneut geladen – malhal

+1

Dies gilt nur für die Indexleiste beim Scrollen auf der rechten Seite des Bildschirms angezeigt. – macserv

Verwandte Themen