2014-04-13 10 views
6

Wie kann ich das tun, ohne alle Tabellen neu zu laden?TabellenView-Header in ios7 neu laden

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 

    UIView *header; 

    if(!self.searchBar) 
    { 
     self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 10, 270, kRowHeight)]; 
     self.searchBar.delegate = self; 
     self.searchBar.barStyle = UISearchBarStyleDefault; 
     self.searchBar.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; 
     self.searchBar.barTintColor = [UIColor clearColor]; 
    } 

    if(!self.placeholderSearchBarView) 
    { 
    self.placeholderSearchBarView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 270, kSearchBarPlaceholderHeight)]; 
    self.placeholderSearchBarView.backgroundColor = [UIColor colorWithWhite:0.9 alpha:0.7]; 

    } 

    if (self.showSearchBar) 
    { 
     for (UIView *v in self.tableView.tableHeaderView.subviews) 
     { 
      if (v.tag == 3433) 
      { 
       [v removeFromSuperview]; 
      } 
     } 
     header = self.searchBar; 
    } else { 
     header = self.placeholderSearchBarView; 
    } 

    return header; 
} 
+0

Ich weiß, du hast Header setzen, aber meinen Sie [ 'tableViewHeader'] (https : //developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instp/UITableView/tableHeaderView) oder eine Abschnittsüberschrift? auch einige Code schreiben, wo Sie die Header-Setup – Rich

+0

@Rich bitte, ich meinen Beitrag aktualisieren, ich habe einen Abschnitt, es – user3527777

Antwort

4

Sie benötigen -reloadSections:withRowAnimation:

So verwenden, wenn Sie Ihre Header aktualisieren müssen:

NSIndexSet *headers = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, [self.tableView numberOfSections])]; 
[self.tableView reloadSections:headers withRowAnimation:UITableViewRowAnimationAutomatic]; 

Wenn Sie nur hat einen Abschnitt (wie Sie gerade in Ihrer aktualisierten Frage erwähnt) Sie können einfach anrufen

+0

Abschnitt Kopf es neu geladen alle Tisch mich – user3527777

+0

Lassen Sie die Antwort mit einem Vorschlag aktualisieren :) – Rich

+0

@ user3527777 genau bevor ich das tue - was versuchst du mit der 'tableHeaderView' in der' tableView: viewForHeaderInSection: 'Methode zu machen? – Rich

9

Sie müssen den gesamten Abschnitt neu laden, um die h neu zu laden Eader.

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:section] withRowAnimation: UITableViewRowAnimationAutomatic]; 

ODER

Sie einen Griff in die Ansicht greifen könnte und es manuell aktualisieren:

UIView *headerView = [self.tableView headerViewForSection:section]; 
//... update your view properties here 
[headerView setNeedsDisplay]; 
[headerView setNeedsLayout]; 
+0

Mit zweiten Ansatz wie brauche ich Set TableView Header? Es funktioniert nicht, arbeite wenn ich self.tableView.tableHeaderView = headerView; [self.tableView.tableHeaderView setNeedsDisplay]; [self.tableView.tableHeaderView setNeedsLayout]; – user3527777