Как получить определенное подпредставление от UIView по тегу
Я новичок в Objective-C, и у меня есть один вопрос.
у меня есть такой UILabel
объект, который я добавил к одному UIView с этим кодом:
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];
Теперь я хочу получить одно подпредставление в моем представлении, где это подпредставление имеет тег = 1, и сохранить его в другом объекте, например так:
UILabel *tagLabel;
tagLabel = // I want get one subview in view where tag = 1
Пожалуйста, помогите мне понять, как это сделать.
6 ответов
Решение
Вы можете получить ваши подпредставления с итерацией цикла
for (UIView *i in self.view.subviews){
if([i isKindOfClass:[UILabel class]]){
UILabel *newLbl = (UILabel *)i;
if(newLbl.tag == 1){
/// Write your code
}
}
}
Пример с UILabel
:
UILabel *label = (UILabel *)[self.view viewWithTag:1];
удачи!
Вы можете получить подпредставление с кодом, который упоминали другие, так же, как
UILabel *tagLabel = (UILabel*)[view viewWithTag:1];
Но важно помнить,
- Убедитесь, что родительское представление не имеет того же значения тега, что и подпредставление. В противном случае
viewWithTag:
метод вернет представление получателя (по которому вы звонитеviewWithTag:
вместо того, чтобы возвращать фактическое подпредставление, которое вы хотите
Поэтому держите теги родительского и дочернего представлений, когда вам нужно использовать viewWithTag:
,
Swift 3.0 и Swift 4.0
if let subLabel:UILabel = primaryView.viewWithTag(123) as? UILabel {
subLabel.text = "do things here :-D"
}
Если вы находитесь на той же точке зрения
UILabel *tagLabel = (UILabel*)[view viewWithTag:1];
Кроме того, если вы хотите новый экземпляр UILabel
UILabel *newTagLabel = [tagLabel copy];
//customize new label here...
[view addSubView:newTagLabel];