У меня проблема с поповером.То, что я сделал, было:
- Поворот моего приложения из пейзажа в портрет
- Показать MasterViewController в всплывающем окне
- Поворот назад в ландшафт
Примечание: masterViewController = Вид в левой части splitViewController detailViewController = Вид в правой части splitViewController
В конце поворота masterViewController сдвигается вниз, и теперь у меня есть свободное пространство между навигацией и viewController.(для изображения: http://www.flickr.com/photos/vriel/5470798582/). Эта проблема не существует, когда я уничтожаю всплывающее окно перед вращением (нажав вне окна всплывающего окна).
В моем detailViewController у меня есть следующий код:
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (popover && popover.popoverVisible) [popover dismissPopoverAnimated:YES];}
-(void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {
UIBarButtonItem* button = [UIBarButtonItem allocinitWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(showPopover:)];
}
-(void)splitViewController: (UISplitViewController*)svc willShowViewController: (UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {
if (self.navigationItem) [self.navigationItem setLeftBarButtonItem:nil animated:NO];
}
-(void)showPopover:(id)sender {
UINavigationController* c = (UINavigationController*)[self getApplicationDelegateObject:@selector(masterViewController)];
if (c) {
if (!popover) {
popover = [UIPopoverController allocinitWithContentViewController:c];
} else {
popover.contentViewController = c;
}
if (popover) {
[popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
}
}