Popover ротация - PullRequest
       3

Popover ротация

0 голосов
/ 23 февраля 2011

У меня проблема с поповером.То, что я сделал, было:

  1. Поворот моего приложения из пейзажа в портрет
  2. Показать MasterViewController в всплывающем окне
  3. Поворот назад в ландшафт

Примечание: 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];
        }
    }  
}

1 Ответ

0 голосов
/ 04 марта 2011

Наконец-то нашел, где проблема

ранее: Прежде чем я создам свой собственный элемент кнопки панели для обработки вращения. На самом деле, я не должен беспокоиться о поповере, потому что яблоко уже позаботится об этом

-(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 willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {
if (self.navigationItem) [self.navigationItem setLeftBarButtonItem:barButtonItem animated:NO];
}
...