2014-07-02 9 views
24

Jestem noobem w celu-c i mam jedno pytanie.jak zdobyć określony widok z uiview przez tag

Mam jeden obiekt UILabel że dodanie jednego UIView z tym kodem:

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]; 

teraz chcę dostać jeden podrzędny moim zdaniem gdzie to subview ma tag = 1 i zapisać go na innym obiekcie tak:

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

proszę mnie o tym poprowadzić.

+0

Przede wszystkim, nie może być wiele subviews z jednym znacznikiem. Prawidłowe pytanie brzmi "jak uzyskać subviews od uiview przez tag". – nicael

Odpowiedz

26

można uzyskać subviews z pętli iteracja

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

mój przyjaciel Chcę uzyskać UILabel z tagiem !!! Gdybym miał wiele etykiet w mojej opinii, nie mogę tego użyć ... proszę, poprowadź mnie tagiem dla dowolnej etykiety. – user3797431

+0

Ustaw unikalne wartości znaczników dla wszystkich widoków i uzyskaj dostęp do obiektu za pomocą znacznika. – Hiren

+4

Najszybszy kod nie jest taht, ale jest to: UILabel * tagLabel = (UILabel *) [view viewTag: 1]; – saraman

4

Można użyć metody viewWithTag:.

+0

dziękuję mojemu przyjacielowi, ale nie wiem o tym. Proszę mnie poprowadzić z kodem !!! – user3797431

+4

Chude, aby przeczytać dokumenty. Wszystko tam jest. – dasdom

70

Przykład z UILabel:

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

powodzenia!

2

Jeśli jesteś na tym samym widoku

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

Ponadto, jeśli chcesz nową instancję UILabel

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

Możesz otrzymać wyeksportować kod, który inni wymieniali, podobnie jak

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

Ale ważnym punktem pamiętać,

  • Upewnij się, że widok rodziców nie mają taką samą wartość jak w tag podrzędny. W przeciwnym razie metoda "viewWithTag:" zwróci widok odbiornika (na który wywołujesz metodę viewWithTag:) zamiast zwracania właściwego podglądu, który chcesz.

W związku z tym należy zachować widok nadrzędny i znaczniki widoku podrzędnego, gdy zachodzi potrzeba użycia metody "viewWithTag:".

+5

UPEWNIJ SIĘ, ŻE SWOJE PRZEGLĄDY RODZICÓW NIE MAJĄ TEGO SAMEGO TAGA JAK WIDOK DLA RODZICÓW !!! Byłem bliski utraty rozumu. Dziękuję Ci. Twój komentarz uratował mi życie. – AhabLives

3

Swift 3,0

let subLabel:UILabel = primaryView.viewWithTag(123) as! UILabel

Powiązane problemy