2012-03-26 8 views
0

In meiner benutzerdefinierten Zelle gibt es eine UILabel und eine UIButton. Immer wenn ich auf das UIButton klicke, wird die Höhe des UILabel laut Inhalt des Etiketts erhöht.Wie kann ich UILabel in einer benutzerdefinierten Tabellenansichtszelle abrufen?

Das Problem ist, dass wie bekomme ich das UILabel das ist eine Unteransicht einer Zelle. Jede Zelle enthält eine Beschriftung und eine Schaltfläche, aber nur UILabel wird erhöht, wenn auf die Zellenschaltfläche geklickt wird, andere bleiben so wie sie sind.

Vielen Dank im Voraus.

+0

Sie müssen uns mehr geben, um weiterzumachen - schreiben Sie Code, um zu veranschaulichen, was Sie gerade haben und erklären Sie, was Sie erreichen wollen. Eine Frage, die ich sofort habe, ist: "Warum versuchst du, zum UILabel zu kommen?" - Sie sollten Methoden für die Zelle haben, die die Labels steuert, und Sie sollten daher Nachrichten an die Zelle senden, die das Label steuert. –

+0

Es gibt viele Unteransichten auf customcell, aber ich möchte nur bestimmte Label Höhe per per Mausklick (wann immer Inhalt ist mehr als klicken Sie auf mehr Schaltfläche Label und Zelle Höhe erhöht. Ich Erfolg mit bestimmten Zelle Höhe, aber auf dieser Zelle bestimmte Label Höhe ist nicht erhöhen) – Birju

+0

Mein Kommentar steht noch. Sie sollten eine Methode für die Zelle haben, die aufgerufen wird, um zu signalisieren, dass die Höhe des Etiketts erhöht werden soll und die Zelle das ändern wird. Die Zelle "besitzt" das Etikett, das sich auf ihr befindet, daher sollte sie für die Änderung der Höhe zuständig sein. Ohne etwas von deinem Code hinzuzufügen, der deine Zelle zeigt, kann ich nicht detaillierter als das beraten. –

Antwort

0

Sie durch all subview s in der Zelle gehen und sehen, welche ein UILabel.:

for(UIView *v in [cell subviews]) 
{ 
    if([v isKindOfClass:[UILabel class]]) 
     //you can put more checks to see if height is to be increased/decreased 
     [v setFrame:CGRectMake(origin.x,origin.y,width,height)]; 
} 
0

Dazu Sie für jede Komponente TAG haben zuweisen müssen ..

0

Versuchen Sie, die Methode, um Ihre Schaltfläche binden kann für Sie arbeiten.

-(void)buttonClick:(id)sender { 


UITableViewCell *cell=(UITableViewCell*)[sender superview]; 
NSArray *subviews=[cell subviews]; 
for (int i=0; i<[subviews count]; i++) { 
    id object=[subviews objectAtIndex:i]; 
    if([object isKindOfClass:[UILabel class]]){ 
     //do stuff here 
    } 
} 

} 
0

Der einfachste Weg ist, den Etiketten die tag-Eigenschaft zuzuweisen. Auf diese Weise können Sie in Ihrer Button-Action-Methode das entsprechende Label finden. Zum Beispiel:

- (void) myButtonAction: (UIButton *) sender 
{ 
    UILabel *theLabel = (UILabel *) [sender.superview viewWithTag: MYLABELTAG]; 
    // Do something with theLabel 
} 

Was dieser Code tut, ist findet das Etikett in der gleichen Ansicht wie die Schaltfläche ist

0

ich schrieb ein kurzes Beispiel, wie Etiketten hier von tablecells zu bekommen: https://stackoverflow.com/a/9864169/407488

Aber ich denke, Was willst du, um alle Labels in allen Zellen auf einmal zu erhöhen? Verwenden Sie dann einfach reloadData und ändern Sie eine Elementvariable, bevor Sie sie aufrufen (beim Berühren der Schaltfläche). Sie lesen dieses Mitglied in Ihrem Code cellForRow: und weisen die entsprechende Höhe zu.

Verwandte Themen