2011-10-05 9 views
18

voglio ottenere gli attributi di un'etichetta da sé così ho provato:ios ottengono etichetta a partire dal numero di tag

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

Ma tutto quello che ho ottenuto è stato un UILabel vuota al posto dell'etichetta che cercavo. Qual è il modo corretto per farlo.

+0

Come hai impostato il tag ed è l'etichetta l'unica vista che è la sottoview (o più in basso nell'albero) di 'self' con il tag' 1'? –

+0

Ho impostato il tag come [label setTag: 1]; in un'altra funzione. L'etichetta non si trova nella sottoview in alto ma è nella vista superiore –

+0

È necessario enumerare 'self subviews' per ottenere l'etichetta desiderata. Il tuo tentativo non funzionerà. –

risposta

36

Quindi ho capito cosa stavo facendo male. Ovviamente

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

crea un puntatore all'istanza di mia etichetta con etichetta 1. Questa realtà non funziona. Ciò che non funziona e il motivo per cui ho riscontrato problemi provengono dal tentativo di rilasciare l'etichetta . Rilasciare l'etichetta è la stessa versione [auto viewWithTag: 1] che non è quello che stavo cercando di fare.

0

Per Swift 3, quando sono in un controller di vista, devo chiamare il codice per recuperare una visione per tag:

self.mInstructionView = self.view.viewWithTag(1) 
2

In Objective C per ottenere UILabel in UIViewController per tag.

qui prendo assunto come UILabel è aggiunto il self.view, altrimenti è possibile passare la visualizzazione in cui si è aggiunto UILabel come [yourview viewWithTag:1];

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

In UITableView

UILabel *label = (UILabel *)[cell viewWithTag:1]; 

cellulare è un oggetto di UITableViewCell as

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; 

In Swift 3

let label:UILabel = self.view.viewWithTag(1) as! UILabel 

In UITableView

let cell:UITableViewCell = self.tableView.dequeueReusableCell(withIdentifier: "Cell") as UITableViewCell! 

let label:UILabel = cell.viewWithTag(1) as! UILabel 

NOTA: prima di usare tag (viewWithTag) ci dovrebbe essere oggetto (UILabel) con quel numero di targa, altrimenti app è incidente .

è possibile impostare tag per qualsiasi oggetto tramite storyboard o tramite XIB e programmaticamente.

+0

Grazie per la risposta in Swift 3, mi è stato utile. –

Problemi correlati