Я новичок в Stack Overflow, но я обнаружил этот вопрос и обнаружил пару других методов для загрузки файла пера, которые гарантируют, что метод viewDidLoad вызывается автоматически. Ответ Эд Марти правильный, но он требует, чтобы вы вышли за пределы кода ViewController для загрузки nib-файла. Эти два примера, которые я предлагаю здесь, позволяют вам сохранить ваш код в реализации ViewController. Не обязательно лучшие способы, просто разные. Если вы знаете о каких-либо недостатках такого подхода, пожалуйста, дайте мне знать ваши мысли.
Во-первых, внутри initWithNibName: bundle: метод вашего подкласса UIViewController, вы можете заменить вызов:
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
с чем-то вроде этого:
self = [super initWithNibName:@"NameOfAlternateNibFile" bundle:nibBundleOrNil];
Или вы можете выполнить то же самое, выполнив следующее:
[[NSBundle mainBundle] loadNibNamed:@"NameOfAlternateNibFile" owner:self options:nil];
[self setView:self.view]; //this line ensures that the viewDidLoad method is called
Ключ к пониманию того, что написано в комментариях над определением функции для $initWithNibName:bundle:
в файле UIViewController.h (включен внизу моего ответа здесь, см. Курсив).
Хорошая вещь при использовании любого из этих методов заключается в том, что viewDidLoad вызывается в любом сценарии.
Вот директивы, перечисленные в UIViewController.h:
Назначенный инициализатор. если ты
подкласс UIViewController, вы должны
назвать супер реализацию этого
метод, даже если вы не используете
СИБ. (Для удобства, по умолчанию
Метод init сделает это за вас, и
укажите nil для обоих методов
аргументы.) В указанном NIB,
Владелец файла прокси должен иметь свой
класс установлен для вашего контроллера представления
подкласс, с представлением розетки
подключен к основному виду. если ты
вызвать этот метод с ноль пера
имя, то этот класс '-loadView
метод попытается загрузить NIB
чье имя совпадает с вашим взглядом
класс контроллера. Если нет такого NIB в
факт существует тогда вы должны либо
call -setView: перед -view
вызвано или переопределите метод -loadView для программной настройки ваших представлений.
- (id) initWithNibName: (NSString *) пакет nibNameOrNil: (NSBundle *) nibBundleOrNil;