Будет ли вызываться loadView, если есть файл пера? - PullRequest
3 голосов
/ 24 сентября 2011

Если я переопределю метод loadView, будет вызван loadView, есть ли файл пера.Если я не переопределю loadView и есть nib-файл, он будет вызван?

Ответы [ 3 ]

8 голосов
/ 24 сентября 2011

Да, loadView отвечает за автоматическую загрузку файлов пера из известных пакетов на основе имени класса контроллера представления. Если вы переопределите loadView и не вызовете [super loadView], никакие кончики не будут загружены. Класс UIViewController будет вызывать loadView, когда вызывается его свойство view со значением nil.

Также обратите внимание, что переопределение loadView и вызов super, скорее всего, не то, что вам нужно. loadView для установки свойства self.view, вот и все. Все остальное должно произойти в viewDidLoad и т. Д.

0 голосов
/ 16 декабря 2013

Да. Представление загрузки всегда вызывается независимо от того, имеет ли Nib или нет. loadView будет иметь функцию загрузки представления для UIViewController, который может поступать из любого источника.

Итак, взгляды выглядят двумя способами

1. Проверьте свойство nibFile , которое можно установить, если вы вызвали initWithNibName: bundle: или если у вас есть раскадровка - раскадровка также хранит все представления, созданные внутри nib-файла

2. Если вы не установите ниб из источника, то вы планируете создавать представления самостоятельно. В этом случае вы можете установить это представление для просмотра свойства представления контроллера позже.

0 голосов
/ 24 сентября 2011

Да

@implementation iPhoneHomeViewController

- (void)loadView {
    DEBUGLOG(@"view = %@, superview = %@", [self valueForKey:@"_view"], [[self valueForKey:@"_view"] superview]);
    [super loadView];
}

Консоль

GNU gdb 6.3.50-20050815 (Apple version gdb-1705) (Fri Jul  1 10:50:06 UTC 2011) 
Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU 
General Public License, and you are welcome to change it and/or distribute copies of it 
under certain conditions. Type "show copying" to see the conditions. There is absolutely 
no warranty for GDB.  Type "show warranty" for details. This GDB was configured as 
"x86_64-apple-darwin".sharedlibrary apply-load-rules all Attaching to process 1671. 

[Line: 40] -[iPhoneHomeViewController loadView]: view = (null), superview = (null)
...