Кнопка возврата UINavigationItem возвращает к предыдущему элементу навигации, но представление не изменяется - PullRequest
0 голосов
/ 04 октября 2009

У меня есть действие "didSelectRowAtIndexPath", которое добавляет панель навигации и отображает новый вид. В новом представлении есть действие, которое помещает другое представление в стек навигации, и оно работает, но нажатие кнопки «назад» не восстанавливает предыдущее представление.

Последовательность в основном:

  • пользователь щелкает ячейку таблицы
  • Появляется панель навигации с новым представлением под ней, показывающая html со ссылками
  • пользователь щелкает ссылку, и в nav добавляется новый вид вместе с кнопкой возврата
  • пользователь нажимает кнопку "Назад", навигация откатывается правильно, но вид не изменяется

Новое представление добавляется путем захвата клика по ссылке:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
if(navigationType == UIWebViewNavigationTypeLinkClicked) {
    UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"webpage"];
    [flipsideNavigationBar pushNavigationItem:navigationItem animated:YES];
    [navigationItem release];

    WebViewController *viewController = [[WebViewController alloc] initWithNibName:@"webView" bundle:nil];
    UIView *webPageView = self.webViewController.view;
    [webPageView addSubview:viewController.view];
    [webPageView insertSubview:flipsideNavigationBar aboveSubview:viewController.view];
    [[viewController.view.subviews objectAtIndex:1] loadRequest:request];
    [webView stopLoading];
    return YES;
}
return YES;
}

Я не уверен, что делаю неправильно; что должно произойти, кнопка «назад» должна закрыть текущий вид и вернуться к предыдущему. Кто-нибудь может предложить что-нибудь попробовать?

Спасибо!

John

1 Ответ

0 голосов
/ 04 октября 2009

Рекомендованный способ сделать это - просто использовать UINavigationController и поместить UIViewController s в стек, как модальный, так и немодальный.

Если вы хотите придерживаться своего пользовательского решения, вы должны установить delegate для вашего UINavigationBar и реализовать его shouldPopItem: или didPopItem: методы. Ссылка на документацию

...