2012-08-29 13 views
6

Ich mache eine Anwendung, die Erweiterung der Zellen onclick benötigt, um weitere Details anzuzeigen. Ich habe eine benutzerdefinierte Zelle verwendet und sie zu einer UTabellenansicht hinzugefügt. Wenn ich auf die Zelle klicke, wird sie fein animiert und geht nach unten. Wenn ich erneut klicke, geht es nach oben, indem ich die Höhe der Zelle verändere. Die tatsächliche benutzerdefinierte Zellengröße ist größer als die Zelle, die normalerweise angezeigt wird. Wenn ich auf die Zelle klicke, wird die ganze Zelle angezeigt. Das einzige Problem, das ich habe, ist der Überlauf der Daten. Diese Daten sollten ausgeblendet werden, wenn die Zelle nicht ausgewählt ist. Nur wenn diese ausgewählt ist, sollten diese Daten angezeigt werden.UItable Cell Overflow ios

Ich bezog mich auf verschiedene Articles, versucht, die Farbeinstellung zu ändern, funktionierte nicht für mich. Ich habe die gleiche Art von Problem in dieser Frage iphone uitablecellview overflow gestellt, versuchte die Antwort, aber es hat nicht funktioniert.

Alles, was ich brauche, ist, wie Sie den unteren Teil der benutzerdefinierten Zelle ausblenden, wenn es nicht erweitert wird, und zeigen Sie es, wenn es erweitert wird ...!

Das sind meine Screenshots

When it is loaded Wenn es geladen wird When I click on a cell Wenn ich auf eine Zelle klicken] When I click on the 2nd cell Wenn ich auf der zweiten Zelle klicken When I click on the cell which is expanded
Wenn ich auf die Zelle klicken die Dies sind der Code snips ich habe bereits erweitert verwendet ....

// Declaring the SearchResultTable. 
    CGRect filterFrame = CGRectMake(0,31, 320, 400); 
    self.searchResultTable = [[UITableView alloc] initWithFrame:filterFrame]; 
    self.searchResultTable.dataSource = self; 
    self.searchResultTable.delegate = self; 
    self.searchResultTable.backgroundColor = [UIColor whiteColor]; 
    self.searchResultTable.separatorStyle = UITableViewCellSeparatorStyleSingleLine; 
    self.searchResultTable.separatorColor = [UIColor lightGrayColor]; 
    [self.view addSubview:self.searchResultTable]; 

//Adding cells 
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"ExpandedSearchResultTableCell"; 


    ExpandedSearchResultTableCell *cell = (ExpandedSearchResultTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 


    if (cell == nil) 
    { 
     cell.contentView.clipsToBounds = YES; 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ExpandedSearchResultTableCell" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 


    } 

    cell.productNameLable.text = @"Only this should be shown"; 
    cell.productListLabel.text = @"This Should be hidden.. Only shown when expanded"; 
    [email protected]"This Should be hidden.. Only shown when expanded"; 
    cell.productTargetLable.text= @"This Should be hidden.. Only shown when expanded"; 
    [email protected]"This Should be hidden.. Only shown when expanded"; 
    [email protected]"This Should be hidden.. Only shown when expanded";; 


    return cell; 
} 


//on click event 
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 




    // Deselect cell 
    [tableView deselectRowAtIndexPath:indexPath animated:TRUE]; 

    // Toggle 'selected' state 
    BOOL isSelected = ![self cellIsSelected:indexPath]; 

    // Store cell 'selected' state keyed on indexPath 
    NSNumber *selectedIndex = [NSNumber numberWithBool:isSelected]; 
    [selectedIndexes setObject:selectedIndex forKey:indexPath]; 

    // This is where magic happens... 
    [searchResultTable beginUpdates]; 
    [searchResultTable endUpdates]; 
} 

//Getting the height depending on expanded or not 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    // If our cell is selected, return double height 
    if([self cellIsSelected:indexPath]) { 
     return kCellHeight * 3.0; 
    } 

    // Cell isn't selected so return single height 
    return kCellHeight; 
} 

Antwort

1

Ok habe ich es durch die Verwendung eines einzigen Flagge und einen Verweis auf cellForRowAtIndexPath Zelle in DidSelectRowAtIndexPath getan. Und meine Etiketten nach dem Zusammenbruch und der Dehnung sichtbar und unsichtbar zu machen. Flag wird entsprechend aktualisiert, ob die Zelle ausgewählt ist oder nicht ... !!

Danke für Sie allen helfen ..!

1

Wenn Sie für die Zellexpansion mit einfachen Tableview Typ,

iPhone UITableView with animated expanding cells

Und wenn, falls Sie verwenden gruppiert Tableview und erweitern möchten zur Auswahl der Abschnittsheader,

Table View Animations and Gestures

suchen
+0

Ich habe bereits den Animationsteil abgeschlossen .. Ich muss nur wissen, wie man den bestimmten Teil der Zelle versteckt ... Wie auch immer, ich werde auf Sie verweisen ... Ich habe bereits die erste überprüft – Gihan

0

Hoppla, viele Codes haben deinen Beitrag verschmutzt.

Ich gehe nicht durch Ihren Code.

Ich werde Ihnen die Logik erklären.

  1. Nur das sollte angezeigt werden wird in Ihrem indexpath.row = 0 gehen; gezeigt + 1 sonst 1.
  • Anzahl der Zeilen in Abschnitt, wenn ausgewählt werden, dann von Zellen zählen
    cell.productNameLable.text = @"Only this should be shown"; 
    cell.productListLabel.text = @"This Should be hidden.. Only shown when expanded"; 
    [email protected]"This Should be hidden.. Only shown when expanded"; 
    cell.productTargetLable.text= @"This Should be hidden.. Only shown when expanded"; 
    [email protected]"This Should be hidden.. Only shown when expanded"; 
    [email protected]"This Should be hidden.. Only shown when expanded";; 
    

    Das macht Ihren Code schmutzig. Wenn Sie alle Daten in einer Zelle anzeigen möchten und nur eine Zelle hinzugefügt wird, wenn Sie einen Abschnitt auswählen, werde ich vorschlagen, alle diese in verschiedenen Zellen hinzuzufügen.

    Ich bin immer noch verwirrt, warum Sie diese lange Codierung tun, Please refer this answer for better explanation

  • +0

    Nein, Sie haben die Frage falsch ... Ich muss das nicht zu der rohen 0 hinzufügen ... Diese Details sind in jeder Zelle meiner Tabelle..Ich muss diese Details in der benutzerdefinierten Zelle bottum Teil zeigen ... Aber dieser Teil sollte sein gezeigt, wenn ich tatsächlich auf die Zelle klicke..Zum Testzwecke nur füge ich diese Zeichenfolgen hinzu ... – Gihan