Все мои 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; }