Подтвердить что ты не робот

Как получить определенный 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 

пожалуйста, расскажите мне об этом.

4b9b3361

Ответ 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