Mam prosty kontroler widoku, który wyświetla UITextView
i UILabel
. Kontrolki są dodawane do storyboardów i łączone jako wyjścia do właściwego kodu kontrolera widoku, są wypełnione tekstem na storyboardie i działają poprawnie podczas testowania.
Ale wtedy próbowałem usunąć kontrolę z widoku superview, a następnie dodać je ponownie jako podgląd, więc zasadniczo powinienem być w tym samym stanie, co poprzednio.
Kod kontrolera widoku znajduje się poniżej.
@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
Ale wynikiem następującego kodu jest to UITextView
(textView
zmienna) to nie wyświetla się, ale etykieta jest. Jeśli wydrukuję zawartość self.view.subviews
i self.textView
po kodzie w viewWillAppear
jest wykonywany, UITextView
jest w hierarchii i ma poprawną ramkę. Ale tekst nie jest w ogóle widoczny.
Próbowałem również:
- ponownie ustawić tekst w kodzie
- ustaw tło
UITextView
W kodzie - powołanie
setNeedsDisplay
naUITextView
Nic nie dostaje UITextView
z powrotem, nawet jeśli istnieje w pamięci. Moim rozwiązaniem jest teraz przydzielić inny UITextView
w kodzie, ale jest to znacznie wolniejsza operacja.
Co tu jest nie tak? Czy to błąd? UITextView
? Dlaczego ten kod działa z UILabel
a nie z UITextView
?
Dziękuję Ci!
Odpowiedzi:
0 dla odpowiedzi № 1Upewnij się, że gniazdko jest podłączone. Szare kółko po lewej stronie powinno być wypełnione, jak pokazano poniżej:
Możesz połączyć go ponownie, przeciągając ctrl. Możesz również potwierdzić, zaznaczając, czy self.textView
isn "t nil.