2011-06-22 7 views
7

Qual è la differenza tra l'impostazione direttamente le proprietà/tableFooterView tableHeaderView:UITableView - impostando direttamente proprietà tableHeaderView vs. metodo di implementazione -viewForHeaderInSection

UIView *headerView = [[UIView alloc] init...]; 
tableView.tableHeaderView = headerView; 
[headerView release]; 

e implementare i metodi/viewForFooterInSection viewForHeaderInSection ?:

- (UIView *)tableView:(UITableView *)tableView 
    viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *headerView = [[[HeaderView alloc] init...] autorelease]; 
    return headerView; 
} 

risposta

37

il primo è l'intestazione di una tabella, il secondo ti darà l'opportunità di aggiungere un'intestazione a ogni sezione di una tabella.

Verde è il tavoloViewHeader, mentre il blu mostra la sezioneHeaders.

enter image description here

-(void) viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    if (headerView == nil) { 
     [[NSBundle mainBundle] loadNibNamed:@"DetailContactHeader" owner:self options:nil]; 
     headerView.nameLabel.text = [NSString stringWithFormat:@"%@ %@", 
                [contact objectForKey:@"name"], 
                [contact objectForKey:@"familyname"]]; 
     if ([[contact allKeys] containsObject:@"pictureurl"]) { 
      headerView.avatarView.image = [UIImage imageNamed:[contact objectForKey:@"pictureurl"]]; 
     } 
    } 
    [self.tableView setTableHeaderView: headerView]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return 2; 
} 

- (NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section { 
    // Return the number of rows in the section. 
    return [[contact allKeys] count]-3; 
} 


// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView  
     cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 

     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 
             reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    id key = [self.possibleFields objectAtIndex:indexPath.row]; 
    cell.textLabel.text = [NSString stringWithFormat:@"%@", key]; 
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", [contact objectForKey:key]]; 
    return cell; 
} 

-(CGFloat) tableView:(UITableView *)tableView 
    heightForHeaderInSection:(NSInteger)section 
{ 
    return 44.0; 
} 

-(UIView *) tableView:(UITableView *)tableView 
viewForHeaderInSection:(NSInteger)section 
{ 
    UILabel *l = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 44)] autorelease]; 
    l.backgroundColor = [UIColor clearColor]; 
    l.text= @"I am a Section Header"; 
    return l; 
} 

troverete il codice per questa applicazione qui: MyContacts

+0

vedere la mia modifica e il mio codice per un esempio – vikingosegundo

+0

welp dopo rovistando vedo hai risposto alla mia domanda senza rispondere lol . Grazie ancora! @vikingosegundo –

+0

@EricOboite: non esitare e vota se è stato utile! – vikingosegundo

Problemi correlati