UINavigationItem后退按钮返回上一个导航项目,但视图不会更改

时间:2009-10-03 23:23:47

标签: objective-c iphone uinavigationitem

我有一个“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;
}

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

谢谢!

约翰

1 个答案:

答案 0 :(得分:0)

建议的方法是使用UINavigationController并将UIViewController推入堆栈,无论是模态还是非模态。

如果您希望坚持使用自定义解决方案,则应为delegate设置UINavigationBar并实施其shouldPopItem:didPopItem:方法。 Documentation link