UISpliViewController DetailView исчезает после поворота - PullRequest
2 голосов
/ 19 декабря 2011

У меня проблема с UIViewController, пожалуйста, сначала прочитайте, прежде чем ответить, это сложнее, чем кажется. Без изменения супер вращение UIViewController работает без проблем!

У меня есть UISplitViewController в книжной ориентации, затем я нажимаю на кнопку, чтобы показать UIPopoverController Popover shown Теперь я изменяю UIViewController с UISplitViewC на UITableViewC tableview Теперь я поворачиваю iPad в альбомную ориентацию tableview landscape И, наконец, переключитесь обратно на SpliViewController! splitviewcontroller landscape Как видите, MasterViewController не отображается, а NavigationItem не исчезает.

Это подводит меня к предположению, что функция делегата splitview не вызывается при вращении UITableViewController (не удивительно)

Как я могу решить эту проблему?

Функции делегатов

- (void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {

//debug_NSLog(@"Entering portrait, showing the button: %@", [aViewController class]);
        barButtonItem.title = @"Akten";
        [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
        [self setMasterPopover: pc];
}


// Called when the view is shown again in the split view, invalidating the button and popover controller.
- (void)splitViewController: (UISplitViewController*)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {

        //debug_NSLog(@"Entering landscape, hiding the button: %@", [aViewController class]);
        [self.navigationItem setLeftBarButtonItem:nil animated:NO];
        [self setMasterPopover: nil];
    }

Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 09 июля 2015

Это слишком давно, но, насколько я помню, это было что-то вроде здесь stackoverflow.com/questions/4649617/…
Контроллер основного представления должен реализовать прием делегата splitview и переслать его в splitview, даже если он невидим.

Нет гарантии, как я уже сказал, давным-давно

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

Та же проблема здесь, но функция делегата вызывается наверняка, вы можете проверить это, поставив NSLog Другой способ - создать свой собственный popovercontroller и вызвать его в методе didrotate.

...