1

Zunächst einmal, bin ein frischer Entwickler in iOS und es ist in meinem ersten Projekt und erste Ausgabe erschienen. Mein Problem erklärt unten.Tableview ersten Abschnitt (Abschnitt 0) bewegt sich nicht, wenn Tabellenansicht nach oben scrollen

Ich habe ein TableView mit zwei Abschnitten. Das Problem ist, wenn ich die TableView nach oben blättern, die gesamte TabelleView mit Ausnahme der ersten Abschnitt Header nach oben bewegt. Aber es gibt kein Problem beim Scrollen nach unten.

mein Code:

//----------------Table view delegate method numberOfSectionsInTableView. 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 2; 
} 

//----------------Table view delegate method numberOfRowsInSection. 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    if (section==0) 
    { 
     return [tableSection1 count]; 
    } 
    else 
    { 
     return [tableSection2 count]; 
    } 
} 

//----------------Table view delegate method titleForHeaderInSection. 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
    if(section==0) 
    { 
     return @"Mandatory Details"; 
    } 
    else 
    { 
     return @"Optional Details"; 
    } 
} 

//----------------Table view delegate method cellForRowAtIndexPath. 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *simpleTableIdentifier = @"SimpleTableItem"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: simpleTableIdentifier]; 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:simpleTableIdentifier]; 

    if(indexPath.section==0) 
    { 
     // Set the data for this cell: 

     cell.textLabel.text = [tableSection1 objectAtIndex:indexPath.row]; 
     cell.detailTextLabel.text = [tableSection1Subtitle objectAtIndex:indexPath.row]; 
    } 
    if(indexPath.section==1) 
    { 
     // Set the data for this cell: 

     cell.textLabel.text = [tableSection2 objectAtIndex:indexPath.row]; 
     cell.detailTextLabel.text = [tableSection2Subtitle objectAtIndex:indexPath.row]; 
    } 
    return cell; 
} 

//---------------Table view delegate method didSelectRowAtIndexPath. 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
    if(indexPath.section==0) 
    { 
     if(indexPath.row==0) 
     { 
      //....my code here.... 
     } 
     if(indexPath.row==1) 
     { 
      //....my code here.... 
     } 
     if(indexPath.row==2) 
     { 
      //....my code here.... 
     } 
     if(indexPath.row==3) 
     { 
      //....my code here.... 
     } 
    } 
    if(indexPath.section==1) 
    { 
     if(indexPath.row==1) 
     { 
      //....my code here.... 
     } 
     if(indexPath.row==2) 
     { 
      //....my code here.... 
     } 
     if(indexPath.row==3) 
     { 
      //....my code here.... 
     } 
    } 
} 

Also hier von meinem Code, der Abschnitt 0 Header dh "Mandatory Details", nicht nach oben bewegen nach dem gesamten Tableview bewegt. Abschnitt 0 stoppt am oberen Rand der Ansicht, und der Rest von tableView bewegt sich auch nach dem oberen Rand der Ansicht nach oben. Aber es gibt keine anderen Probleme für andere Komponenten in der Tabellenansicht, auch nicht für Abschnitt 0, wenn wir nach unten scrollen.

Bitte helfen Sie mir. Es sieht aus wie ein Bug für alle. Also werde ich von meinem Anführer gefeuert. Bitte hilf mir.

+1

Dies ist von Entwurf. Der Abschnittsheader wird nicht verschoben, bis die letzte Zeile dieses Abschnitts nach oben verschoben wurde. Sie können überprüfen, ob es in der * Kontakte * App auf dem iPhone genauso funktioniert. – Nishant

+0

Was ist dann mit dem zweiten Abschnitt? –

+0

Sie können den Tabellenansichtsstil zu 'UITableViewStyleGrouped' ändern (tun Sie es von der Schnittstelle), um zu erreichen, was Sie wollen. – Nishant

Antwort

3

Lösung: Sie können den Tableview Stil UITableViewStyleGrouped ändern (es kann von der Schnittstelle tun) um zu erreichen was du willst.

Lösung 2:

CGFloat dummyViewHeight = 40; 
UIView *dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, dummyViewHeight)]; 
self.tableView.tableHeaderView = dummyView; 
self.tableView.contentInset = UIEdgeInsetsMake(-dummyViewHeight, 0, 0, 0); 

Abschnittsüberschriften werden nun wie eine Zelle bewegen: Sie diesen zwicken verwenden können.

+0

Lösung 1 funktionierte für mich. Perfect –

+0

Ich habe die Lösung 2 noch nicht ausprobiert. –

+0

Lösung 1 ist einfacher als Lösung 2. programmatisch zu tun ist zu schwer –