Ho un semplice controller di visualizzazione che visualizza un UITextView
e un UILabel
. I controlli vengono aggiunti sullo storyboard e collegati come outlet al codice del controller di visualizzazione corretto. Sono riempiti con testo sullo storyboard e funzionano correttamente, quando testati.
Ma poi ho provato a rimuovere i controlli da superview e quindi aggiungerli nuovamente come sottoview, quindi in pratica dovrei essere nello stesso stato di prima.
Il codice del controller di visualizzazione è di seguito.
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextView *textView;
@property (weak, nonatomic) IBOutlet UILabel *label;
@end
@implementation ViewController
- (void)viewWillAppear:(BOOL)animated
{
[self.textView removeFromSuperview];
[self.view addSubview:self.textView];
[self.label removeFromSuperview];
[self.view addSubview:self.label];
}
@end
Ma il risultato del seguente codice è quello UITextView
(textView
variabile) è non visualizzato, ma l'etichetta è. Se stampo il contenuto di self.view.subviews
e self.textView
dopo il codice in viewWillAppear
viene eseguito, il UITextView
è nella gerarchia e ha anche il frame corretto. Ma il testo non è affatto visibile.
Ho anche provato:
- imposta nuovamente il testo nel codice
- impostare lo sfondo di
UITextView
nel codice - chiamata
setNeedsDisplay
sopraUITextView
Niente arriva UITextView
indietro, anche se esiste in memoria. La mia soluzione è ora assegnarne un'altra UITextView
nel codice, ma è un'operazione molto più lenta.
Quindi, cosa c'è che non va qui? È un bug in UITextView
? Perché questo codice funziona con UILabel
e non con UITextView
?
Grazie!
risposte:
0 per risposta № 1Assicurarsi che la presa sia collegata. Il cerchio grigio a sinistra deve essere riempito come mostrato di seguito:
Puoi riconnetterlo trascinando il tasto Ctrl. Puoi anche confermarlo controllando se self.textView
non è nulla.