UINavigationItem 后退按钮返回到上一个导航项,但视图没有改变
Posted
技术标签:
【中文标题】UINavigationItem 后退按钮返回到上一个导航项,但视图没有改变【英文标题】:UINavigationItem back button returns to previous navigationitem, but view doesn't change 【发布时间】:2009-10-03 23:23:47 【问题描述】:我有一个添加导航栏并显示新视图的“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】:推荐的方法是使用UINavigationController
并将UIViewController
s 压入堆栈,无论是模态的还是非模态的。
如果您希望坚持使用您的自定义解决方案,您应该为您的UINavigationBar
设置一个delegate
并实现其shouldPopItem:
或didPopItem:
方法。 Documentation link
【讨论】:
感谢您提供的好信息。它需要进行一些重写,但现在它可以工作了。以上是关于UINavigationItem 后退按钮返回到上一个导航项,但视图没有改变的主要内容,如果未能解决你的问题,请参考以下文章