панель инструментов iphone, показывающая вид

Хорошо, я не могу найти метод, вызываемый UIViewController, который представляет новое представление.

у меня есть приложение на основе UINavigationController. Как только я перехожу к представлению, показывающему детали объекта, у меня есть 1 панель инструментов внизу, поэтому я могу предоставить пользователю некоторые параметры. Когда он нажимает на barButtomItem, я хочу показать новое представление, но не менять панель навигации, поэтому, если я нажму кнопку «Назад», он вернется из подробного представления, а не из новой опции.

Я знаю метод pushViewController, но он не работает так, как я хочу.

спасибо заранее!

изменить: просто для большей ясности, если я вызову [[self navigationController] pushViewController: loteCompraViewController animated: YES]; Я получаю новое представление, связанное с новым контроллером, но оно также меняет панель навигации, и это не очень хорошо для меня.


person Guillermo Varini    schedule 18.11.2011    source источник
comment
Что вы имеете в виду, говоря, что pushViewController не работает? Что оно делает? Что вы от него ожидали?   -  person occulus    schedule 18.11.2011
comment
если я вызываю [[self navigationController] pushViewController: loteCompraViewController animated: YES]; он показывает новый вид, но он также меняет панель навигации, и это то, чего я не хочу.   -  person Guillermo Varini    schedule 18.11.2011


Ответы (1)


Дайте вашему контроллеру представления «представление, показывающее детали объекта» два метода: isShowingOverlayView и dismissOverlayView. В isShowingOverlayView верните YES, если вы показываете «новое представление», потому что «он нажимает на barButtomItem». В dismissOverlayView скройте «новое представление».

Затем создайте свой собственный подкласс UINavigationController. В своем подклассе переопределите popViewControllerAnimated:, чтобы использовать эти методы контроллера представления сведений об объектах, например:

- (UIViewController *)popViewControllerAnimated:(BOOL)animated
{
    if ([self.topViewController respondsToSelector:@selector(isShowingOverlayView)]
        && [(id)self.topViewController isShowingOverlayView])
    {
        [(id)self.topViewController dismissOverlayView];
        return nil;
    } else {
        return [super popViewControllerAnimated:YES];
    }
}

Используйте этот подкласс вместо стандартного UINavigationController.

person rob mayoff    schedule 18.11.2011