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