objective-c uiview uilabel

objective c - Cómo obtener una subvista determinada de UIView por etiqueta



objective-c uilabel (6)

Ejemplo con UILabel :

UILabel *label = (UILabel *)[self.view viewWithTag:1];

¡buena suerte!

Soy un novato en Objective-C y tengo una pregunta.

Tengo un objeto UILabel que agrego a una UIView con este código:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,10,self.view.frame.size.width-15-70, 30)]; label.tag = 1; label.font = [PublicObject fontTexts:17]; label.textAlignment = NSTextAlignmentRight; label.textColor = [UIColor whiteColor]; [cell setBackgroundColor:[UIColor clearColor]]; UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 50)]; view.backgroundColor = [PublicObject colorWithHexString:@"cd4110"]; label.text = [filterData objectAtIndex:indexPath.row]; view addSubview:label];

Ahora quiero obtener una subvista en mi vista donde esta subvista tenga la etiqueta = 1 y guardarla en otro objeto como este:

UILabel *tagLabel; tagLabel = //I want get one subview in view where tag = 1

Por favor, ayúdame a entender cómo hacer esto.



Puede obtener la subvista con el código que otros han mencionado, al igual que

UILabel *tagLabel = (UILabel*)[view viewWithTag:1];

Pero un punto importante para recordar,

  • Asegúrese de que la vista principal no tenga el mismo valor de etiqueta que en la subvista. De lo contrario, el método viewWithTag: devolverá la vista del receptor (en la que está llamando viewWithTag: lugar de devolver la subvista real que desea.

Por lo tanto, mantenga las etiquetas de vista primaria y vista secundaria distintas siempre que necesite usar viewWithTag:


Puede obtener sus subvistas para la iteración de bucle

for (UIView *i in self.view.subviews){ if([i isKindOfClass:[UILabel class]]){ UILabel *newLbl = (UILabel *)i; if(newLbl.tag == 1){ /// Write your code } } }


Si estás en la misma vista.

UILabel *tagLabel = (UILabel*)[view viewWithTag:1];

Además, si quieres una nueva instancia de UILabel.

UILabel *newTagLabel = [tagLabel copy]; //customize new label here... [view addSubView:newTagLabel];


Swift 3.0 y Swift 4.0

if let subLabel:UILabel = primaryView.viewWithTag(123) as? UILabel{ subLabel.text = "do things here :-D" }