2014-07-02 11 views
24

Sono obietta in ogg-c e ho una domanda.come ottenere determinate sottoview da uiview per tag

Ho un oggetto UILabel che l'aggiunta di un UIView con questo codice:

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

ora voglio ottenere uno visualizzazione secondaria, a mio avviso in cui questa visualizzazione secondaria ha tag = 1 e salvarlo su un altro oggetto così:

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

per favore guidami a riguardo.

+0

Prima di tutto, ci possono essere molte subviews con un tag. Quindi la domanda corretta è "come ottenere sottoview da uiview per tag". – nicael

risposta

26

È possibile ottenere i subviews con ciclo di iterazione

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

amico mio, voglio ottenere UILabel con tag !!! se io fossi in possesso di molte etichette, non posso usarlo ... per favore guidami con tag per qualsiasi etichetta – user3797431

+0

Imposta i valori dei tag univoci su tutte le viste e accedi all'oggetto usando il tag. – Hiren

+4

Il codice più veloce non è quello ma è quello: UILabel * tagLabel = (UILabel *) [visualizza viewWithTag: 1]; – saraman

4

È possibile utilizzare il metodo viewWithTag:.

+0

grazie amico mio, ma non lo so. Per favore, guidami con il codice !!! – user3797431

+4

Lean per leggere i documenti. È tutto lì dentro. – dasdom

70

Esempio con UILabel:

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

buona fortuna!

2

Se siete sulla stessa vista

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

Inoltre, se si desidera una nuova istanza di UILabel

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

È possibile ottenere la sottoview con il codice che altri hanno menzionato, proprio come

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

Ma un punto importante da ricordare,

  • Assicurarsi che la vista padre non ha lo stesso valore di tag a partire dalla visualizzazione secondaria. In caso contrario, il metodo "viewWithTag:" restituirà la vista del destinatario (su cui si chiama viewWithTag: metodo) invece di restituire l'attuale sottoview desiderata.

Quindi mantenere le tag di visualizzazione padre e vista figlio distinte ogni volta che è necessario utilizzare il metodo "viewWithTag:".

+5

ASSICURI CHE LA TUA VISTA DEL GENITORE NON ABBIA LO STESSO TAG COME LA TUA VISTA GENITORIALE !!! Ero sul punto di perdere la testa. Grazie. Il tuo commento mi ha salvato la vita. – AhabLives

3

Swift 3,0

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

Problemi correlati