Измените навигационный элемент контроллера представления, который представляет модальное представление? - PullRequest
1 голос
/ 26 июня 2011

Я представляю модальный контроллер вида в приложении UISplitViewController.Я поменял местное представление по умолчанию для UINavigationController.

. В моем UINavigationController я реализовал несколько методов, чтобы показать кнопку «Мастер» для контроллера разделенного вида в левом верхнем углу.Проблема заключается в том, что когда ориентация устройства изменяется, когда виден модальный вид, кнопка не исчезает из основного вида в моем контроллере навигации.

Что может быть причиной этой проблемы?

РЕДАКТИРОВАТЬ:

Я переместил логику шаблона для кнопки в подкласс UINavigationController.Проблема в том, что когда visibleViewController представляет modalViewcontroller, , он становится visibleViewController.Так что мой код по какой-то причине не сможет правильно удалить кнопкуВот мой код:

Код:

#pragma mark - Split view support

- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController: (UIPopoverController *)pc{
    barButtonItem.title = NSLocalizedString(@"Menu", @"");

    //
    //  TODO: Handle cases where there is
    //  a modal view controller that is 
    //  being shown to the user.
    //


    [((UIViewController *)[self.viewControllers objectAtIndex:0]).navigationItem  setLeftBarButtonItem:barButtonItem];

    self.popoverController = 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{

    [self.visibleViewController.navigationItem setLeftBarButtonItem:nil];
    [self.popoverController dismissPopoverAnimated:YES];
    self.popoverController = nil;
}

//
//  Preserve navigation items across detail 
//  view loads in portrait mode.
//

- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated{

    UIBarButtonItem *barItem = nil;

    if (self.visibleViewController.navigationItem.leftBarButtonItem != nil) {

        barItem = self.visibleViewController.navigationItem.leftBarButtonItem;
    }

    [super setViewControllers:viewControllers animated:animated];

    if (barItem != nil) {
        [self.visibleViewController.navigationItem setLeftBarButtonItem:barItem];
    }
}

1 Ответ

1 голос
/ 26 июня 2011

Я не думаю, что возможно использовать SplitViewController и отобразить кнопку для основного вида в навигационном элементе. UISplitViewControllerDelegate специально разработан для работы с UIBarButtonItem, вам, вероятно, придется реализовать пользовательский контроллер popover, чтобы заставить его работать.

...