2009-10-03 1 views
0

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

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

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

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

- (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; 
} 

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

Спасибо!

Джон

ответ

0

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

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

+0

благодарит за хорошую информацию. Это потребовало немного перезаписи, но теперь это работает. – John

Смежные вопросы