viewDidLoad запускается, когда представление загружается из xib.
У вас есть несколько вариантов здесь.
Простейшим является viewDidAppear: метод
- (void)viewDidAppear:(BOOL)animated
{
// Handle what you want for when your view has become visible.
// This may happen more then once. So a flag for the first time will
// give you a sufficient Limit for Initialization
}
или тамis viewWillAppear:
Другой вариант - заставить IB загрузить для вас класс таким образом, чтобы он не был нулевым.И будет доступен в viewDidLoad:
Ваш MyClass должен быть UIView.
Вы помещаете UIView (в качестве заполнителя) в View TableViewController, где вы хотите его.
Затем вы устанавливаете его тип класса в Интерфейсном Разработчике в Инспекторе Идентификаций под Пользовательским Классом.
Наконец, вы перетаскиваете соединение из IBOutlet
@property (nonatomic, retain) IBOutlet MyClass *myClass;
в ваш Пользовательский КлассUIView в Интерфейсном Разработчике
Затем, когда Интерфейсный Разработчик инициализирует ваш класс, он заполнит это свойство пустым экземпляром этого класса.
Третьим вариантом будет свойство отложенной загрузки
Вот как я делаю ленивую загрузку
//we will take for granted that your @property is in the header
//and the following Synthesize is on the class
@synthesize myClass=_myClass; // setting instance variable to avoid confusion
- (MyClass*) myClass
{
if (_myClass == nil) _myClass = [[MyClass alloc] init];//Create a default instance and retain it
return _myClass;
}
, затем вы используете self.myClass и ваш метод получения создаст его для вас.
РЕДАКТИРОВАТЬ:
Я добавил = _myClass в @synthesize, чтобы изменить переменную экземпляра вне свойства
. Таким образом, использование myClass вызовет ошибку, и вы будете вынуждены использовать self.myClass для получения средства доступа к свойству.