Ответ 1
Вы определенно не должны звонить [super loadView]
. Я бы сказал, что вы обнаружили ошибку в примере ZoomingPDFViewer.
Вы переопределяете loadView
, если хотите программно создать иерархию представлений для своего контроллера представления (не используя xib).
Как вы указали, в документах четко указано, что вы не должны называть super.
Ваша пользовательская реализация этого метода не должна быть вызвана супер.
Я предполагаю, что это следует избегать загрузки как из xib, так и с программным созданием представления, поскольку этот метод используется базой для загрузки представления из xib:
Если контроллер представления имеет связанный файл nib, этот метод загружает представление из файла nib.
Обратите внимание, что даже если при распределении вашего объекта UIViewController
вы передаете nil для параметра nibNameOrNil, реализация UIViewController
loadView
будет пытаться загрузить любой xib с соответствующим именем класса в нем.
Контроллер вида имеет связанный файл nib, если свойство nibName возвращает значение non-nil, которое возникает, если контроллер вида был созданный из раскадровки, если вы явно назначили ему нить файл с использованием метода initWithNibName: bundle: method, или если iOS найдет нить файл в комплекте приложений с именем на основе контроллеров представления имя класса. Если в контроллере представления нет связанного ниба файл, этот метод создает простой объект UIView.
Настоящая цель этого метода - дать вам полный контроль над построением иерархии представлений, не полагаясь на встроенный механизм загрузки xib.:
Вы можете переопределить этот метод, чтобы вручную создавать свои представления.
Лично я переопределяю loadView
, если: 1.) xib, который я бы сделал для него, действительно тривиальным или 2.) Макет элемента управления очень динамичен, поэтому создание xib со статическим макетом имеет мало преимуществ.