Все мои IBOutlet равны нулю в viewDidLoad
Я создал UIViewController, который мы можем назвать MyViewController1. Когда я вызываю MyViewController1, все мои IBOutlet равны нулю в viewDidLoad (и в остальной части кода тоже).
Когда я создаю этот контроллер, делаяMyViewController1 *vc = [[MyViewController1 alloc] init],
Если я заменяю MyViewController1 на другой, например MyViewController2, это работает. Поэтому я думаю, что проблема действительно в MyViewController1.
MyViewController1 На самом деле является подклассом MySuperViewController1, который является UIViewController.
Спасибо за помощь !
EDIT
Я понял, что мой случай был, возможно, более сложным. Вот мои точные файлы:/ / MySuperViewController1
MySuperViewController1.h
MySuperViewController1.m
MySuperViewController1.xib
/ / MyViewController1
MyViewController1.h
MyViewController1.m
Таким образом, перо принадлежит суперклассу, а не подклассу. Я могу это сделать ?3 ответа:
Вероятно, вам следует использовать :
MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MyViewController1" bundle:nil]Вызов
initне приведет к совпадению с вашим файлом xib и не выделит ваши различияIBOutletПравка:
Существует два возможных решения :
Первый вызов init с super nibName:
MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MySUperViewController1" bundle:nil]Второй вызов метода super
initWithNibName:in child init:-(id)init { if (self = [super initWithNibName:@"MySuperViewController1" bundle:nil]) { // Init } return self; }