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.
Podrías usar el método viewWithTag:
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á llamandoviewWithTag:
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"
}