Я думаю, что логика заключается в том, что в loadView вы создаете элементы, то есть создаете и распределяете память, что является наиболее дорогостоящим действием.Поэтому, когда [super loadView]
был вызван полностью вверх по лестнице, все виды готовы к отображению, и дорогая часть закончена.
В - (void) viewDidLoad
вы заполняете представления данными, viewDidLoad "знает"все элементы готовы к тому, чтобы на них был установлен текст, значения, содержимое и т. д.
UINavigationControllers и т. д. может быть полезно знать, когда все готово, чтобы начать анимацию просмотра на экране.Если вы помещаете все экземпляры / выделения в viewDidLoad, вы заставляете контроллер делать все, включая анимацию на экране, в последний момент.Я не знаю точных деталей, но это то, что я получаю из документации и «жизненного цикла» UIViewController
Я обычно делаю это так:
- (void)loadView {
[super loadView];
UIView *container = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 20.0f, 320.0f, 460.0f)];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg02.png"]];
[container addSubview:imageView];
[imageView release];
UIImageView *background = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg_search.png"]];
[container addSubview:background];
[background release];
UILabel *textlabel = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 200.0f, 20.0f)];
[self setLabel:textlabel];
[container addSubview:self.label];
[textlabel release];
[self setView:container];
[container release];
}
- (void)viewDidLoad {
[self.label setText:@"I am ready!"];
[super viewDidLoad];
}
Я иногда использую viewWillAppear для установки данных, если это контроллер представления, который поддерживает modalViewControllers или выдвигает новый viewController, где пользователь устанавливает данные, которые должны быть обновлены на родительском элементе при повторном извлечении представления (например, UITableViewController со списком песенКогда пользователь нажимает, пользователь выбирает песню, и на контроллерах появляется, и родительский элемент теперь отображает название песни, которое выбрал пользователь и т. д.) В любом случае, когда представление часто включается / выключается на экране, но должно отображать вновь измененные данные.