Когда я программно выделил UILabel в своем пользовательском методе initWithNibName, а позже в viewDidLoad попытался присвоить ему строку, метка не указывала ни на что. Я не выпустил это; метка отображается на экране. Если я создаю метку в IB и назначаю ей текст в viewDidLoad, она работает.
Противопоказано ли правило устанавливать вручную выделенные объекты в viewDidLoad?
Почему он ни на что не указывает, хотя viewDidLoad вызывается после моего init?
Из документа viewDidLoad:
Этот метод вызывается после того, как контроллер представления загрузил связанные виды в память. Этот метод вызывается независимо от того, были ли представления сохранены в файле пера или созданы программно в методе loadView. Этот метод чаще всего используется для выполнения дополнительных шагов инициализации для представлений, загружаемых из файлов пера.
В моем init:
_descriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 218, 280, 10)];
_descriptionLabel.numberOfLines = 0;
_descriptionLabel.lineBreakMode = UILineBreakModeWordWrap;
_descriptionLabel.font = [UIFont systemFontOfSize:12.0];
_descriptionLabel.adjustsFontSizeToFitWidth = NO;
_descriptionLabel.text = @"Description not found.";
_descriptionLabel.backgroundColor = [UIColor clearColor];
В viewDidLoad значение переменной равно 0x0.
То же самое с моим вручную выделенным UIButton, который полностью работает после загрузки представления.