shouldAutorotateToInterfaceOrientation вызывается только после представления viewcontroller - PullRequest
1 голос
/ 10 мая 2011

Когда я создаю проект и запускаю его без изменений, а автоматически созданный viewcontroller загружается, он вызывает beforeAutorotateToInterfaceOrientation без каких-либо проблем. Теперь я пробовал разные методы для представления собственного viewcontroller, но в этом представлении shouldAutorotateToInterfaceOrientation не будет вызываться при вращении. Моя первая попытка состояла в том, чтобы изменить didFinishLaunchingWithOptions делегата приложения таким образом:

ProjectView1 *pv1 = [ProjectView1 alloc];
self.viewController = pv1;
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];

Но в ProjectView1 mustAutorotateToInterfaceOrientation не вызывается при повороте экрана.

Моя вторая попытка состояла в том, чтобы загрузить представление, которое было создано путем создания проекта, и представить мое пользовательское представление модально, вызвав presentModalViewController, но результат тот же, что мой пользовательский контроллер представления не получает вызова shouldAutorotateToInterfaceOrientation.

1 Ответ

1 голос
/ 10 мая 2011

Вы должны вызывать метод initWithNib после того, как вы делаете alloc для UIViewController.

Я попытался реплицировать этот сценарий, и следующий код вызывает beforeAutorotateToInterfaceOrientation при изменении ориентации:

 ProjectView1 *pv1 = [[ProjectView1 alloc]initWithNibName:nil bundle:nil];
 self.viewController = pv1;
 self.window.rootViewController = self.viewController;
 [self.window makeKeyAndVisible];

ИзменитьВ коде укажите правильное имя файла nib или оставьте его равным nil, если вы собираетесь создать представление самостоятельно.

...