0

我有一个添加导航栏并显示新视图的“didSelectRowAtIndexPath”操作。新视图中有一个动作将另一个视图推送到导航堆栈上,它可以工作,但是单击“返回”不会恢复以前的视图。

顺序基本上是:

  • 用户单击表格单元格
  • 出现导航栏,下方有新视图,显示一些带有链接的 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;
}

我不确定我做错了什么;应该发生的是“后退”按钮应该关闭当前视图并返回到前一个视图。任何人都可以建议任何尝试吗?

谢谢!

约翰

4

1 回答 1

0

推荐的方法是只使用 aUINavigationController并将UIViewControllers 压入堆栈,无论是模态的还是非模态的。

如果您希望坚持使用您的自定义解决方案,您应该delegate为您设置一个UINavigationBar并实现它的shouldPopItem:didPopItem:方法。文档链接

于 2009-10-03T23:34:40.107 回答