Я конвертирую существующее приложение для iPhone в приложение для iPad.Приложение для iPhone было создано с использованием контейнера viewcontroller (UINavigationController), который сначала предоставил пользователю пользовательский viewcontroller (UITableViewController), который выдвигал пользовательский viewcontroller (UIViewController) на основе выбора строки.
В приложении iPad япредставление пользователя напрямую с пользовательским UIViewController (без контроллера контейнера) и затем возможность выбора различных параметров с помощью UIPopoverController.В myAppDelegate.m я просто добавляю пользовательский UIViewController в окно, используя:
[window addSubview:[myCustomViewController view]];
В myCustomViewController.m я сильно изменяю представление, основываясь на повороте устройства, регистрируясь для уведомлений об изменении ориентации в viewWillAppear:
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
}
Затем я проверяю ориентацию в методе didRotate: и получаю очень странные результаты.Это вызывается три раза, просто загружая представление?Также кажется, что он сообщает об ориентации, соответствующей ПРЕДЫДУЩЕМУ чертежу вида?
- (void) didRotate:(NSNotification *)notification
{
if (self.interfaceOrientation == UIInterfaceOrientationPortrait) {
NSLog(@"Portrait");
} else if (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft || self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
NSLog(@"Landscape");
}
}
Я читал в документации, и кажется, что добавление подпредставления к окну (без класса контейнера) не будетвызывать viewWillAppear: метод для вызова, но в моем случае кажется, что он вызывается, просто ненадежно.
Есть ли какой-то другой шаблон, который я должен использовать для этого приложения?Я просто хочу загрузить одно пользовательское представление и использовать два поповерных контроллера (без другой навигации)?
-Derrick
btw - Это работает точно так же, как если бы я помещал пользовательский viewController наUINavigationController в моем приложении делегат.Мне просто не нужен навигационный контроллер для этого приложения.