我有一个“didSelectRowAtIndexPath”操作,它会添加一个导航栏并显示一个新视图。在新视图中有一个操作将另一个视图推送到导航堆栈,它可以工作,但单击“返回”不会恢复上一个视图。
序列基本上是:
通过捕获链接上的点击来添加新视图:
- (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 :(得分:0)
建议的方法是使用UINavigationController
并将UIViewController
推入堆栈,无论是模态还是非模态。
如果您希望坚持使用自定义解决方案,则应为delegate
设置UINavigationBar
并实施其shouldPopItem:
或didPopItem:
方法。 Documentation link