Правильная реализация loadView

В документации Apple не сказано, какова правильная реализация loadView.

Я обнаружил, что если вы реализуете loadView следующим образом:

- (void)loadView
{
    self.view = [[UIView alloc] init];
}

...то вы получите другое поведение, чем если бы вы его вообще не реализовывали. В частности, в одном 20-строчном проекте я обнаружил, что viewWillAppear вызывается с фреймом нулевого размера для self.view — если только вы не используете версию loadView от Apple по умолчанию.

Если посмотреть в Google, то можно найти множество «руководств», в которых представлены заведомо неправильные реализации loadView.принудительно установите размер (320 480), потому что автор учебника «обнаружил, что это работает, если я сделаю это».

Я хотел бы знать, какой должна быть правильная реализация.

NB: в приведенном выше примере я добавляю его в иерархию представлений внутри AppDelegate следующим образом:

[self.window addSubview:(UIViewController*).view];

Я считаю, что при наличии UINavigationController или UITabBarController Apple выполняет некоторые дополнительные действия, которые — в качестве побочного — эффект - заставляет однострочную реализацию loadView работать нормально. Но я хочу написать его правильно, чтобы он работал всегда!

NB: я попытался установить маску автоматического изменения размера в корневом представлении, но это не меняет того, что происходит:

- (void)loadView
{
    self.view = [[UIView alloc] init];
    self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}
14
задан Adam 21 March 2012 в 11:41
поделиться