Когда я программирую без наконечника, у меня создается впечатление, что мне нужно вызвать loadView для инициализации моего представления, например:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nil bundle:nil];
if (self) {
// Custom initialization
[self loadView];
}
return self;
}
(Я установил nibNameOrNil = nil, так как не существует nib.)
Затем я создаю представление, например:
- (void) loadView {
self.view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 367)];
[self viewDidLoad];
}
Это делает все остальное в viewDidLoad.
Я все еще не уверен, что я должен делать вызовы loadView и viewDidLoad таким образом. Они не получаются автоматически.
Что сбивает с толку в документации для ссылки на класс UIViewController:
loadView Discussion
Вы никогда не должны вызывать этот метод напрямую.. этот метод, когда запрашивается свойство view, но в настоящее время равно нулю. Если вы создаете свои представления вручную, вы должны переопределить этот метод и используйте его, чтобы создать свои представления. Если вы используете Interface Builder для создания ваши представления и инициализировать контроллер представления, то есть вы инициализируете представление с использованием метода initWithNibName: bundle: установите nibName и nibBundle напрямую, или создать как ваши представления, так и представление контроллер в Interface Builder - тогда вы не должны переопределять этот Метод.
Итак, я не понимаю, как loadView вызывается, если я никогда не буду называть его напрямую.
По умолчанию этот метод ищет действительный nib информацию и использует эту информацию для загрузки связанного файла nib. Если информация о nib не указана, реализация по умолчанию создает простой объект UIView и делает его основным.
Я не понимаю, как это работает - создание боли UIView.
Если вы переопределите этот метод, чтобы вручную создавать свои представления, вы должны сделать это и назначить корневой вид вашей иерархии просмотреть свойство. (Создаваемые вами представления должны быть уникальными экземплярами и не должны использоваться совместно с каким-либо другим объектом контроллера вида.) Ваш пользовательская реализация этого метода не должна быть вызвана супер.
Если вы хотите выполнить любую дополнительную инициализацию своих просмотров, сделайте поэтому в методе viewDidLoad. В iOS 3.0 и более поздних версиях переопределить метод viewDidUnload, чтобы освободить любые ссылки на просмотра или его содержимого.
Хорошо, пока он не говорит, как вызывается viewDidLoad. Итак, для viewDidLoad:
viewDidLoad Обсуждение
Этот метод называется после того, как контроллер представления загрузил его связанные представления в память. Этот метод называется независимо. независимо от того, хранятся ли представления в файле nib или созданы программно в методе loadView. Этот метод чаще всего используется для выполнения дополнительных шагов инициализации для представлений, которые загруженные из файлов nib.
Вызывается тем, что?
Поскольку эти методы автоматически не вызываются в моем коде, мне остается думать, что я должен сам их называть. Но я до сих пор не понимаю четкого понимания документации, что это правильная вещь.